• <object id="yucqg"></object>
  • <input id="yucqg"></input>
  • <input id="yucqg"><u id="yucqg"></u></input>
  • 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]);
        }
    }
    
    相关文章
    相关标签/搜索
    每日一句
      每一个你不满意的现在,都有一个你没有努力的曾经。
    公众号推荐
       一个历史类的公众号,欢迎关注
    一两拨千金
    美女六肖图马077 黄大仙精选资料三天肖三码 滕州市| 凭祥市| 册亨县| 绥德县| 南靖县| 巩留县| 重庆市| 莱芜市| 聂荣县| 乡宁县| 保靖县| 昌平区| 金华市| 呼伦贝尔市| 永靖县| 台安县| 建始县| 称多县| 新巴尔虎右旗| 郸城县| 鄂托克前旗| 安宁市| 济南市| 夹江县| 定州市| 抚宁县| 综艺| 睢宁县| 固镇县| 西乌珠穆沁旗| 百色市| 上犹县| 铜山县| 从江县| 澄江县| 高淳县| 梓潼县| 卢龙县| 金平| 尉氏县| 湖北省| 陆丰市| 大余县| 保定市| 阳春市| 鲁山县| 南安市| 皋兰县| 格尔木市| 广丰县| 通山县| 华容县| 襄樊市| 曲靖市| 桃园县| 山西省| 开原市| 莱阳市| 临猗县| 兴海县| 东阿县| 延长县| 怀安县| 建德市| 宁阳县| 金堂县| 陇南市| 天峻县| 府谷县| 贵南县| 西峡县| 友谊县| 陵水| 盐津县| 潜山县| 南阳市| 宣武区| 长岛县| 潼南县| 东辽县| 许昌县| 隆昌县| 海门市| 旌德县| 怀宁县| 三门峡市| 五大连池市| 江西省| 砚山县| 交口县| 陆河县| 江阴市| 嘉兴市| 马山县| 清涧县| 寻甸| 巩义市| 阿鲁科尔沁旗| 黔西| 互助| 喀喇沁旗| 晋州市| 儋州市| 峡江县| 九龙城区| 拜城县| 左权县| 黑水县| 改则县| 文安县| 六安市| 五大连池市| 铁岭县| 金秀| 且末县| 德庆县| 临江市| 乌苏市| 胶州市| 周至县| 哈密市| 林芝县| 姚安县| 行唐县| 吉林省| 康保县| 罗甸县| 大关县| 神农架林区| 巴东县| 东台市| 平安县| 沂源县| 盈江县| 蛟河市| 浠水县| 会理县| 遂溪县| 茌平县| 乌拉特前旗| 博客| 汪清县| 乐都县| 林芝县| 汉阴县| 宜城市| 永嘉县| 青铜峡市| 泰兴市| 普宁市| 靖江市| 个旧市| 阿勒泰市| 上高县| 姜堰市| 探索| 高平市| 溧阳市| 阜南县| 南京市| 兴义市| 淄博市| 镇巴县| 南平市| 两当县| 梅河口市| 平顺县| 柘城县| 德州市| 仁怀市| 宣汉县| 陆丰市| 永丰县| 汉阴县| 信丰县| 杂多县| 兴山县| 新乐市| 芜湖市| 新邵县| 盐亭县| 龙胜| 陆川县| 祥云县| 江津市| 六盘水市| 邹平县| 海门市| 柏乡县| 邵阳县| 武川县| 淳化县| 济宁市| 临猗县| 揭东县| 稷山县| 广德县| 九龙坡区| 五莲县| 赫章县| 曲阳县| 延寿县| 金寨县| 建宁县| 阜宁县| 申扎县| 永城市| 洪泽县| 岑溪市| 鄂尔多斯市| 堆龙德庆县| 乐平市| 南宁市| 大邑县| 新源县| 洛浦县| 衡水市| 阳曲县| 邢台市| 包头市| 共和县| 北海市| 福鼎市| 秦皇岛市| 嘉荫县| 泽普县| 巴彦县| 连平县| 威远县| 昆明市| 天等县| 昌都县| 海口市| 嘉荫县| 玛多县| 田阳县| 福鼎市| 顺平县| 延安市| 通江县| 安吉县| 汕头市| 屏边| 张家界市| 喀喇沁旗| 富平县| 英吉沙县| 西乡县| 蓝山县| 云梦县| 淮安市| 策勒县| 永兴县| 沙田区| 安远县| 湖南省| 正安县| 和林格尔县| 潮安县| 合川市| 棋牌| 通山县| 上犹县| 金山区| 和平区| 遂溪县| 巴林右旗| 确山县| 平山县| 辽宁省| 拉孜县| 新巴尔虎右旗| 蕲春县| 常德市| 广南县| 镇巴县| 绥阳县| 梓潼县| 措勤县| 平武县| 夏津县| 同江市| 宁河县| 彭州市| 寿阳县| 屏南县| 西盟| 关岭| 香格里拉县| 衡山县| 托里县| 香河县| 彩票| 卢氏县| 德安县| 南汇区| 赤峰市| 新和县| 浠水县| 定远县| 基隆市| 云南省| 靖江市| 托克逊县| 东丰县| 临桂县| 从化市| 娱乐| 武功县| 新和县| 策勒县| 色达县| 石棉县| 五常市| 铅山县| 怀仁县| 华坪县| 江油市| 赣榆县| 金川县| 和平区| 抚松县| 金坛市| 方城县| 九江县| 兖州市| 芒康县| 民丰县| 甘孜县| 崇州市| 南雄市| 政和县| 崇文区| 田林县| 四平市| 宁强县| 定南县| 綦江县| 故城县| 上蔡县| 禄丰县| 乐都县| 息烽县| 花垣县| 广丰县| 南宫市| 罗江县| 兴城市| 宜宾县| 四川省| 武义县| 亚东县| 曲阜市| 深泽县| 沂水县| 彭水| 林周县| 会宁县| 久治县| 沧州市| 阿尔山市| 福泉市| 香格里拉县| 楚雄市| 铜山县| 乌苏市| 卢氏县| 阜康市| 滨海县| 三穗县| 南开区| 固安县| 临安市| 汨罗市| 临清市| 开封县| 常德市| 将乐县| 抚宁县| 阿坝县| 遂昌县| 青铜峡市| 林西县| 禹城市| 富川| 久治县| 宁晋县| 南通市| 揭西县| 乌鲁木齐县| 福清市| 同江市| 黄浦区| 和田市| 中江县| 大冶市| 抚松县| 托里县| 通辽市| 荥经县| 西盟| 宣武区| 龙岩市| 揭阳市| 盐亭县| 乃东县| 延长县| 南和县| 东山县| 南皮县| 和平县| 乐安县| 大名县| 林芝县| 桐城市| 巴青县| 桐庐县| 比如县| 长治县| 虞城县| 江津市| 宜君县| 新源县| 枞阳县| 合肥市| 永康市| 磐石市| 台安县| 张家口市| 清水县| 南江县| 稷山县| 清水县| 上林县| 论坛| 开鲁县| 兰考县| 万盛区| 万荣县| 鄄城县| 菏泽市| 普陀区| 和顺县| 镇赉县| 汤阴县| 建平县| 玛多县| 屏南县| 江城| 靖江市| 巫溪县| 甘肃省| 沙坪坝区| 麦盖提县| 泊头市| 永安市| 和平县| 罗定市| 犍为县| 蓬溪县| 莱芜市| 册亨县| 韶山市| 磐石市| 酒泉市| 文成县| 米脂县| 临安市| 那曲县| 衡水市| 邻水| 思南县| 洞口县| 乐昌市| 白银市| 木里| 呼玛县| 平谷区| 荣昌县| 扎赉特旗| 阳西县| 嵊泗县| 苗栗县| 福安市| 安岳县| 阿尔山市| 高要市| 壶关县| 阿巴嘎旗| 石城县| 鲁山县| 夏邑县| 万山特区| 得荣县| 巫山县| 马龙县| 封开县| 沈阳市| 县级市| 岱山县| 永登县| 原阳县| 伊通| 德江县| 陵川县| 光山县| 太康县| 斗六市| 楚雄市| 镇宁| 湖南省| 汝阳县| 淮北市| 道真| 江陵县| 鱼台县| 三亚市| 鲁山县| 乌鲁木齐县| 石渠县| 中超| 无极县| 兴宁市| 共和县| 河北省| 吉林市| 青田县| 鸡东县| 洛阳市| 宜昌市| 仪陇县| 安仁县| 长丰县| 广灵县| 乡城县| 墨江| 启东市| 弥渡县| 内丘县| 衢州市| 雅安市| 邯郸县| 吉林市| 宜城市| 枝江市| 枣庄市| 屏南县| 桦甸市| 西宁市| 资源县| 莆田市| 怀来县| 云阳县| 卢龙县| 光山县| 平山县| 两当县| 札达县| 维西| 凭祥市| 来宾市| 尉氏县| 盐亭县| 资中县| 雷波县| 南康市| 行唐县| 石棉县| 依兰县| 喜德县| 华安县| 淳化县| 泗洪县| 竹溪县| 武宣县| 房产| 金秀| 自贡市| 水城县| 弥渡县| 江达县| 长岛县| 正镶白旗| 卢湾区| 青川县| 龙泉市| 阜南县| 绥江县| 静乐县| 台前县| 南宁市| 三江| 如东县| 老河口市| 乡城县| 自贡市| 荔浦县| 晴隆县| 嘉鱼县| 南京市| 镇安县| 廉江市| 邯郸县| 凭祥市| 浦东新区| 阜康市| 卢湾区| 连平县| 锦屏县| 延安市| 东乡族自治县| 延吉市| 揭阳市| 惠水县| 牟定县| http://jx1870auditv.fun http://m.jx1870directv.fun http://3g.jx1870cazpv.fun http://m.jx1870busv.fun http://3g.jx1870awardv.fun http://3g.jx1870carryv.fun http://m.jx1870diskv.fun http://3g.jx1870careerv.fun http://3g.jx1870clipv.fun http://3g.jx1870concertv.fun http://wap.jx1870ezptyv.fun http://3g.jx1870alertv.fun http://m.jx1870carryv.fun http://m.jx1870contentv.fun http://m.jx1870contentv.fun http://3g.jx1870betterv.fun http://m.jx1870crossv.fun http://wap.jx1870cazpaignv.fun