• CF949E Binary Cards 题解

    题面

    首先发现:一个数最多会出现1次;

    然后深入推出:一个数不会既用它又用它的相反数;

    这样就可以依次考虑每一位了:
    如果所有的数都不含有这一位,那么就直接把所有的数除以2

    如果含有,那么就减去这一位的数,再除以2;

    2

    当含有的时候搜索就可以了;

    注意需通过去重来优化dfs,否则会TLE掉;

    #include <bits/stdc++.h>
    #define N 100010
    using namespace std;
    int a[N],b[21][N],ans[N],st[N],top=0;
    int anss=INT_MAX;
    void dfs(int dep,int n){
        if(n<=1&&!b[dep][1]){
            if(top<anss){
                anss=top;
    			for(int i=1;i<=top;i++){
    				ans[i]=st[i];
    			}
            }
            return;
        }
        if(dep>20||top>=anss){
        	return;
        }
        bool flag=1;
        for(int i=1;i<=n;i++){
        	if(b[dep][i]&1){
    			flag=0;
    			break;
            }
        }
        if(flag){
            for(register int i=1;i<=n;i++){
            	b[dep+1][i]=b[dep][i]/2;
            }
            n=unique(b[dep+1]+1,b[dep+1]+n+1)-b[dep+1]-1;
            dfs(dep+1,n);
            return;
        }
        else{
            for(register int i=1;i<=n;i++){
            	if(b[dep][i]&1){
            		b[dep+1][i]=(b[dep][i]-1)/2;
            	}
                else{
                	b[dep+1][i]=b[dep][i]/2;
                }
            }	            
            st[++top]=1*(1<<dep);
            register int tmp=unique(b[dep+1]+1,b[dep+1]+n+1)-b[dep+1]-1;
            dfs(dep+1,tmp);
            top--;
            for(register int i=1;i<=n;i++){
            	if(b[dep][i]&1){
            		b[dep+1][i]=(b[dep][i]+1)/2;
            	}
                else{
                	b[dep+1][i]=b[dep][i]/2;
                }
            }	            
            st[++top]=-1*(1<<dep);
            tmp=unique(b[dep+1]+1,b[dep+1]+n+1)-b[dep+1]-1;
            dfs(dep+1,tmp);
            top--;
        }   
    }
    int main()
    {
        register int n;
        scanf("%d",&n);
        for(int i=1;i<=n;i++){
        	scanf("%d",&a[i]);
        }
        sort(a+1,a+n+1);
        n=unique(a+1,a+n+1)-a-1;
        for(int i=1;i<=n;i++){
        	b[0][i]=a[i];
        }
        dfs(0,n);
        printf("%d\n",anss);
        for(int i=1;i<=anss;i++){
        	printf("%d ",ans[i]);
        }
    }
    
    相关文章
    相关标签/搜索
    每日一句
      每一个你不满意的现在,都有一个你没有努力的曾经。
    公众号推荐
       一个历史类的公众号,欢迎关注
    一两拨千金
    香港马会资枓大全2019天空彩彯天下彩天空彩票与你同行2019今晚开码结果开奖现场历史开奖资料记录在线查询 彰武县| 安福县| 页游| 吉木萨尔县| 罗田县| 丰城市| 秦皇岛市| 朝阳区| 兴海县| 社会| 卓资县| 珲春市| 宁波市| 成都市| 墨脱县| 渭南市| 麻栗坡县| 西青区| 越西县| 丽水市| 威信县| 山阴县| 星子县| 鸡泽县| 开原市| 通辽市| 全椒县| 丽水市| 运城市| 丹棱县| 通道| 海南省| 崇明县| 伊宁市| 饶阳县| 莲花县| 壤塘县| 台北县| 梅州市| 简阳市| 甘洛县| 宣恩县| 深圳市| 开封市| 威海市| 黄大仙区| 铜山县| 乃东县| 全椒县| 华亭县| 成武县| 兴海县| 南陵县| 奉化市| 淮北市| 鸡西市| 平安县| 灵山县| 新兴县| 慈溪市| 马公市| 太白县| 嫩江县| 洛扎县| 海盐县| 个旧市| 泽普县| 靖西县| 京山县| 萨嘎县| 布拖县| 利川市| 阿拉善右旗| 大安市| 乌什县| 华安县| 北京市| 襄汾县| 孙吴县| 涟源市| 彭州市| 乌鲁木齐县| 阳谷县| 黄冈市| 辉县市| 南靖县| 宁武县| 贵德县| 五华县| 洛宁县| 沧源| 当雄县| 洮南市| 盈江县| 榆社县| 军事| 丹江口市| 福泉市| 西和县| 砚山县| 丘北县| 高淳县| 花莲县| 资兴市| 通州市| 丰顺县| 奇台县| 和林格尔县| 六盘水市| 张家界市| 湘潭县| 永德县| 武山县| 福海县| 台南县| 台中市| 永寿县| 沙坪坝区| 承德县| 伊宁市| 商河县| 军事| 孝义市| 小金县| 镇赉县| 渑池县| 伊吾县| 新巴尔虎右旗| 南通市| 太原市| 汪清县| 鹿泉市| 新营市| 宝丰县| 广西| 固阳县| 乡城县| 视频| 德州市| 绵竹市| 龙胜| 桑日县| 喀什市| 贵阳市| 横山县| 二手房| 寿宁县| 九台市| 新竹县| 濮阳市| 新乡县| 图片| 新河县| 揭阳市| 高清| 德江县| 拉孜县| 商南县| 凭祥市| 海安县| 克什克腾旗| 东明县| 开封县| 蛟河市| 辉南县| 怀安县| 株洲县| 乌拉特后旗| 准格尔旗| 临沂市| 叶城县| 柏乡县| 正定县| 鄂尔多斯市| 临朐县| 乳山市| 荥阳市| 蕲春县| 盘锦市| 阳曲县| 阳曲县| 内江市| 绍兴市| 尼玛县| 湖口县| 临沧市| 阳原县| 兰考县| 化州市| 天峨县| 大关县| 离岛区| 沁水县| 历史| 三台县| 东至县| 马公市| 建水县| 襄汾县| 平阴县| 方正县| 贵溪市| 于田县| 清水河县| 阿鲁科尔沁旗| 濮阳市| 砀山县| 金华市| 沈阳市| 南华县| 汾西县| 定结县| 灌阳县| 临邑县| 牟定县| 湖州市| 昌吉市| 土默特右旗| 盐源县| 广灵县| 法库县| 宁武县| 专栏| 江安县| 贵南县| 筠连县| 昌乐县| 蚌埠市| 镇坪县| 东海县| 阿坝县| 密山市| 临澧县| 揭东县| 石阡县| 会泽县| 本溪市| 泽州县| 哈密市| 舟曲县| 兴海县| 改则县| 潢川县| 塔河县| 安龙县| 平阴县| 通渭县| 德庆县| 赣榆县| 江北区| 石林| 察隅县| 永宁县| 承德县| 滨海县| 永川市| 垫江县| 莱芜市| 襄垣县| 岑溪市| 玉环县| 新丰县| 航空| 嵊州市| 高邑县| 孝感市| 阿克陶县| 科技| 丁青县| 抚顺县| 沽源县| 邳州市| 象山县| 新沂市| 徐水县| 三亚市| 三亚市| 云安县| 孝义市| 峨眉山市| 温泉县| 河北省| 栾川县| 玛多县| 镇赉县| 诸城市| 余江县| 武夷山市| 新平| 阿拉善左旗| 孟连| 多伦县| 民权县| 新营市| 赣榆县| 广汉市| 环江| 磴口县| 登封市| 黄冈市| 南华县| 黔东| 麻栗坡县| 丘北县| 潼南县| 柯坪县| 思南县| 潞西市| 文登市| 桃园县| 崇仁县| 新河县| 鲁甸县| 凌海市| 新田县| 治多县| 永丰县| 连平县| 吉木萨尔县| 灵璧县| 莱阳市| 文山县| 柳州市| 鱼台县| 六安市| 西贡区| 大渡口区| 建昌县| 甘孜县| 兴和县| 施秉县| 南郑县| 灵台县| 康平县| 铜鼓县| 古丈县| 武穴市| 建阳市| 凤阳县| 冀州市| 墨玉县| 江北区| 承德市| 伊吾县| 宁明县| 泰来县| 华坪县| 时尚| 县级市| 星座| 叶城县| 南陵县| 大竹县| 佛坪县| 镇康县| 稻城县| 金溪县| 铜山县| 大港区| 广安市| 滦平县| 江安县| 盖州市| 镇平县| 高平市| 岳阳市| 蒙自县| 阿坝县| 岐山县| 唐山市| 南靖县| 湖口县| 太湖县| 宣化县| 邛崃市| 昌图县| 平南县| 库伦旗| 来宾市| 宝坻区| 龙州县| 新巴尔虎左旗| 北碚区| 阿坝县| 通道| 花莲县| 贡山| 若尔盖县| 新兴县| 青岛市| 绍兴县| 图片| 长葛市| 原平市| 大方县| 永安市| 咸阳市| 和林格尔县| 永平县| 平塘县| 安多县| 客服| 黄骅市| 嘉兴市| 南城县| 内江市| 监利县| 颍上县| 岳普湖县| 云安县| 陈巴尔虎旗| 奎屯市| 平度市| 清苑县| 江陵县| 镇雄县| 昔阳县| 曲阜市| 文昌市| 连南| 安岳县| 南雄市| 淮滨县| 庆安县| 高尔夫| 镇雄县| 夏邑县| 广灵县| 镇远县| 卢龙县| 乐至县| 辛集市| 肇源县| 寻乌县| 永康市| 金山区| 定襄县| 邯郸县| 鄂温| 乐昌市| 河池市| 永安市| 南涧| 大悟县| 慈溪市| 靖边县| 铜山县| 巫山县| 嘉义市| 孙吴县| 株洲市| 年辖:市辖区| 萝北县| 古蔺县| 连州市| 沂水县| 汤阴县| 阳信县| 台安县| 印江| 高密市| 乡城县| 江都市| 浦北县| 湖北省| 桓仁| 修武县| 若尔盖县| 巴林左旗| 龙游县| 南丰县| 长岛县| 新建县| 兴城市| 岢岚县| 连平县| 北宁市| 仁怀市| 柳林县| 昆明市| 新河县| 尉犁县| 安多县| 慈溪市| 镇康县| 海南省| 邵武市| 波密县| 临夏市| 炉霍县| 台中市| 金湖县| 乌鲁木齐县| 达州市| 张北县| 涪陵区| 滦南县| 雷波县| 巴彦淖尔市| 麻栗坡县| 舒兰市| 利川市| 宾川县| 忻城县| 湖南省| 保康县| 禹州市| 驻马店市| 遂川县| 汤原县| 库尔勒市| 蓬溪县| 新余市| 玉龙| 长汀县| 视频| 阿拉善右旗| 玉溪市| 客服| 抚宁县| 宿迁市| 张家界市| 静海县| 普洱| 仪陇县| 宜昌市| 北安市| 乐东| 临沭县| 禄劝| 天峨县| 滨州市| 共和县| 呼玛县| 武功县| 罗源县| 张掖市| 云和县| 丰原市| 明光市| 蒲城县| 佛学| 淮南市| 津市市| 赤壁市| 松阳县| 台南县| 达州市| 达州市| 鱼台县| 辽阳市| 永善县| 嘉善县| 永平县| 抚州市| 台江县| 广平县| 凉城县| 永春县| 北碚区| 赤水市| 托克逊县| 墨玉县| 昌都县| 桂东县| 响水县| 绥芬河市| 永吉县| 青河县| 黎平县| 东丰县| 武鸣县| 富川| 友谊县| 河南省| 马关县| 葫芦岛市| 文昌市| 千阳县| 若羌县| 松桃| 陈巴尔虎旗| 黄石市| 濮阳县| 启东市| 许昌县| 林口县| 澜沧| 佛冈县| 阿拉善盟| 密云县| 南城县| 疏勒县| 平江县| 寻甸| 云梦县| 张掖市| 方正县| 正蓝旗| 北安市| 永丰县| 龙游县| 门头沟区| 乌苏市| 建水县| 怀化市| 响水县| 东城区| 平舆县| 曲阳县| 英山县| 北辰区| 灯塔市| 南阳市| 南部县| http://ooiios.fit http://m.pglssk.fit http://miupwy.fit http://m.upfgmz.fit http://www.mhvohh.fit http://fzcefy.fit http://wap.ntbmts.fit http://qwhmkh.fit http://m.ojscti.fit http://wap.lvhqdg.fit http://wap.dzyzqk.fit http://hyoara.fit http://wap.tphobv.fit http://wap.ocetuv.fit http://wap.jivaty.fit http://ubpjym.fit http://m.pskptd.fit http://wap.hamckw.fit