Codeforces Round #112 (Div. 2) E题 位运算

来源:互联网 发布:软件配置管理实施情况 编辑:程序博客网 时间:2024/06/01 09:52

大意就是给出一个序列,对每个元素,看序列中是否存在另一个元素跟他按位与的值为0,然后输出这个元素

数列的长度很大,所以n2肯定挂掉。当时想到了对每个数,可能有400多万种情况,但是却没想到去预处理。

正解就是预处理了,对于一个二进制数,如果数位中的一些1变成0后,能够变成序列中的某个数,那么就将这个二进制数指向那个数。

然后对某个元素,要找能使跟他按位与为0的元素,只要满足能把这个元素的二进制位中的1都干掉就行,就是说这个元素二进制位是1的地方,要求的数相应的位置就必须是0,然后其他地方就无所谓了。那么最大的能满足要求的数便是该数与((1 << 22) -1 )异或所得的数了,然后这个数二进制位中的1随意改变成0后的数也都满足要求。

然后事先我们也预处理过了,直接输出就行了。

/*ID: sdj22251PROG: subsetLANG: C++*/#include <iostream>#include <vector>#include <list>#include <map>#include <set>#include <deque>#include <queue>#include <stack>#include <bitset>#include <algorithm>#include <functional>#include <numeric>#include <utility>#include <sstream>#include <iomanip>#include <cstdio>#include <cstdlib>#include <cctype>#include <string>#include <cstring>#include <cmath>#include <ctime>#define INF 1000000009#define MAXN 210005#define eps 1e-10#define L(x) x<<1#define R(x) x<<1|1using namespace std;int a[1000005];int tag[4500005];int main(){    int n;    scanf("%d", &n);    for(int i = 1; i <= n; i++)    {        scanf("%d", &a[i]);        tag[a[i]] = a[i];    }    int fk = (1 << 22) - 1;    for(int i = 1; i <= fk; i++)    {        for(int j = 0; j < 22; j++)        if((i & (1 << j)) && tag[i ^ (1 << j)])        tag[i] = tag[i ^ (1 << j)];    }    for(int i = 1; i <= n; i++)    {        if(tag[a[i] ^ fk]) printf("%d", tag[a[i] ^ fk]);        else printf("-1");        if(i < n) putchar(' ');else printf("\n");    }    return 0;}


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 九代雅阁收音机信号不好怎么办 九代雅阁电瓶亏电怎么办 17款雅阁混动汽车胎压灯怎么办 空调制冷出热风怎么办 轿车方向机漏油怎么办 车钥匙感应不灵怎么办 汽车助力泵漏油怎么办 奔腾b70油耗高怎么办 方向机漏油了怎么办 威志油耗高怎么办 佳美2.4油耗大怎么办 笔记本电脑按键坏了怎么办 电视主板坏了怎么办 面包车电量亏电怎么办 自动挡汽车亏电怎么办 自动挡亏电了怎么办 面包车打不起火怎么办 汽车电瓶亏电怎么办 小车电池没电怎么办 汽车电瓶有电打不着火怎么办 汽车电瓶没电打不着火怎么办 汽车电池没电打不着火怎么办 汽车电瓶亏电打不着火怎么办 自动挡电瓶没电打不着火怎么办 自动挡车子没电打不着火怎么办 自动挡汽车没电打不着火怎么办 自动挡汽车有电打不着火怎么办 p0846骐达故障怎么办 汽车冷却液漏了怎么办 冷却液管子漏了怎么办 电脑网络不可用怎么办 手表带子坏了怎么办 这几天生意不好怎么办 大学不想住宿舍怎么办 在北京买车后被骗怎么办 联通套餐不到期怎么办 联通全国流量包怎么办 缤智车钥匙丢了怎么办 车遮阳板松了怎么办 洗车把内饰划了怎么办 新车销售没销量怎么办