题意就是给我们两个数n,x。让我们构造个数组,数组有三个条件

1.要有尽可能多的元素

2.要其中任何一段数字的异或和不等于0和x

3.元素的范围是[ 1, 2n2^n2n)

分析:如果对异或足够敏感的话 应该能想到其中第二个条件的意思,其实就是说目标数组中的元素的异或前缀和不能有相等的两个数,如果有相等的两个异或和说明其中可以中间的一段数是可以用异或得到0的,也就是违反了条件2。
那么对于x,其实就是如果异或和中有一个x,说明这其中有段数的异或和等于x,所以违反2,那么也就是说其中任意两个前缀和数字异或不能为x。
那么也就是我们可以枚举[ 1, 2n2^n2n)中的每一个数,然后对其中每一个数i进行处理如果当前的i^x的数之前出现过作为异或和数组中的元素了,根据异或运算的性质:
a^b = c,
那么
c^a = b,
c^b = a
所以就说明,i^x之前出现过,那么如果我们要把i确定为最新的异或和数组中的元素,就会形成
i^x ^ i = x的异或性质,那么违反规则2.
所以本题我们可以根据异或的特点,将这个问题转化为构造异或前缀和数组,而数组的构造方法是根据异或的性质来的,如果a^x ^a = x 就不选这个数
最后根据异或数组ai-1^ai得到那个原数组元素
如果异或熟练,这个解法可以很快想到

#include<iostream>
#include<cstring>
#include<algorithm>
#include<set>
using namespace std;
const int maxn =1<<19;
int cnt,S[maxn];
int main()
{int n,x;scanf("%d%d",&n,&x);// 不能存在两相等 也不能存在和x异或为0的数set<int>s;s.insert(0);for(int i=1;i<(1<<n);i++){if(!s.count(i^x)){//已存在一个0 如果与x相等会得到0 保证不会有相同的元素 尽可能变大三个条件s.insert(i);S[++cnt]=i;}}printf("%d\n",cnt);for(int i=1;i<=cnt;i++){printf("%d",S[i]^S[i-1]);if(i==cnt)puts("");else putchar(' ');}return 0;
}

CF 1174 D. Ehab and the Expected XOR Problem 异或技巧相关推荐

  1. Ehab and the Expected XOR Problem

    https://codeforces.com/contest/1174/problem/D 题解: C++版本一 题解:朴素 /* *@Author: STZG *@Language: C++ */ ...

  2. CodeForces - 1174D Ehab and the Expected XOR Problem(构造+思维+位运算)

    题目链接:点击查看 题目大意:给出一个 n,再给出一个 x,要求构造一个数列,满足该数列的所有子串的异或和都不等于 0 且都不等于 x,在满足上面的条件下尽可能长 题目分析:因为这个题目最终的目标是需 ...

  3. 【Codeforces Round #525(Div. 2)】Ehab and another another xor problem(思维+异或)

    题目链接 D. Ehab and another another xor problem time limit per test 1 second memory limit per test 256 ...

  4. Codeforces Round #525 (Div. 2) D Ehab and another another xor problem

    题目:http://codeforces.com/contest/1088/problem/D 题目大意:有0 <= a , b <= 230的a,b两个整数,定义一次操作(c , d)的 ...

  5. CF1088D Ehab and another another xor problem

    思路: 根据异或的性质一位一位来搞.参考了https://blog.lucien.ink/archives/362/ 实现: 1 #include <bits/stdc++.h> 2 us ...

  6. ML之NN:利用神经网络的BP算法解决XOR类(异或非)问题(BP solve XOR Problem)

    ML之NN:利用神经网络的BP算法解决XOR类(异或非)问题(BP solve XOR Problem) 目录 输出结果 实现代码 输出结果 实现代码 #BP solve XOR Problem im ...

  7. DL:LinearNN(numpy自定义的) solve XOR problem

    DL:LinearNN(numpy自定义的) solve  XOR problem 目录 输出结果 核心代码 LinearNN使用案例 输出结果 核心代码 #BP solve XOR Problem ...

  8. C++xor cipher异或密码算法(附完整源码)

    xor cipher异或密码的算法 xor cipher异或密码的完整源码(定义,实现,main函数测试) xor cipher异或密码的完整源码(定义,实现,main函数测试) #include & ...

  9. Codeforces Round #628 (Div. 2) E. Ehab‘s REAL Number Theory Problem 巧妙的质因子建图

    传送门 文章目录 题意: 思路: 题意: 给你nnn个数,每个数的因子个数不超过777个,选出最少的数使其乘积为平方数. n≤1e5n\le 1e5n≤1e5 思路: 由于因子不超过777个,所以由约 ...

最新文章

  1. 薛老师软考高项学员:2016年4月27日作业
  2. exit函数_全面深入了解 Python 魔法函数
  3. python学习笔记四-列表
  4. scrum立会报告+燃尽图(第三周第七次)
  5. .Net Cancellable Task - APM异步超时机制扩展
  6. Active Directory PowerShell模块收集AD信息
  7. magento问题集
  8. 俯瞰云原生,这便是供应层
  9. 超级详细Ajax发送请求(接受提示信息或者返回参数)
  10. 接入网NFV引入路径:CPE、OLT和BNG或将率先云化
  11. VS2005 SP1 “无法使用此产品的安装源,请确认安装源存在,并且您可以访问它”的错误...
  12. git commit或pull后恢复到原来版本
  13. Centos下docker相关文件迁移发生的问题记录
  14. ts(typescript)面向对象之类的继承
  15. idea2020导入maven工程(解决项目文件没有蓝色方块问题)
  16. 广告行业计费模式专业术语
  17. 2022年餐饮连锁行业研究报告
  18. MySQL与Oracle主键Query性能测试结果
  19. 小程序errno_错误:UNIX程序中的errno
  20. 第一批90后30岁了,该有多少存款?

热门文章

  1. Error applying BeanValidation relational constraints错误的解决
  2. 使用vs2010+WCF发布json数据,ExtJS4.0进行调用
  3. 关于某些人和某些事的断想
  4. 微信模版消息 touser 能否多个 群发
  5. 学校计算机二级模拟上机能看分数吗,全国计算机二级考试机试考完怎么储存的...
  6. git 大文件报错Out of memory, malloc failed、 The remote end hung up unexpectedly
  7. InstallShield SdShowMsg未关闭导致安装程序无法停止
  8. 启动nginx服务报错Job for nginx.service failed because the control process exited with error code.
  9. 1019 数字黑洞 (20分)
  10. 1018 锤子剪刀布 (20分)