CodeForces.1174D.EhabandtheExpectedXORProblem(构造前缀异或和数组)
这道题比赛的时候没做出来,赛后补题的时候发现其实可以构造一个前缀异或和数组,然后根据初始化的第一个值进行填数,但是作为菜鸡的我虽然坚信自己的想法是正确的却想了很久也没有能够构造出来所谓的前缀异或和数组。唉,嘤嘤嘤
本题思路:我们可以根据这个构造一个前缀异或和数组,由ans[ i ] ^ ans[ i - 1 ]就可以得到数组里第i个元素的值。
如何构造这个前缀数组呢,我们暂时把我们构造的前缀数组叫做b,最后输出的答案数组称作a,那么我们可以知道,a [ l ] ^ a[l + 1] ^ .... ^ a[ r ] = b[ r ] ^ b[l - 1]。所以这个问题也就变成了,我们要构造一个
前缀数组,使得任意两个数字的异或和不为x且每次数字只使用一次.(为了避免0的出现),所以我们知道两个异或和为x的数字我们只能选择其中一个。
Can anyone explain me why it's 1 to 2^n - 1?
#include <cstdio>
#define len 1 << n
#include <vector>
#include <algorithm>
using namespace std; const int maxn = << ;
int value[maxn];
vector <int> ans; int main() {
int n, x;
scanf("%d %d", &n, &x);
ans.push_back();
for(int i = ; i < len; i ++) {
if(i != x) {
if(value[i]) continue;//只选用未标记的
ans.push_back(i);
value[x ^ i] = ;//不能选择和i异或得到x的数字
}
}
printf("%d\n", ans.size() - );
for(int i = ; i < ans.size(); i ++) {
if(i > ) printf(" ");
printf("%d", ans[i] ^ ans[i - ]);
}
printf("\n");
return ;
}
CodeForces.1174D.EhabandtheExpectedXORProblem(构造前缀异或和数组)的更多相关文章
- Codeforces Round #539 (Div. 2) C. Sasha and a Bit of Relax(前缀异或和)
转载自:https://blog.csdn.net/Charles_Zaqdt/article/details/87522917 题目链接:https://codeforces.com/contest ...
- XOR and Favorite Number CodeForces - 617E(前缀异或+莫队)
题意原文地址:https://blog.csdn.net/chenzhenyu123456/article/details/50574169 题意:有n个数和m次查询,每次查询区间[l, r]问满足a ...
- Codeforces Round #340 (Div. 2) E 莫队+前缀异或和
E. XOR and Favorite Number time limit per test 4 seconds memory limit per test 256 megabytes input s ...
- codeforces 1101G (Zero XOR Subset)-less 前缀异或+线性基
题目传送门 题意:给出一个序列,试将其划分为尽可能多的非空子段,满足每一个元素出现且仅出现在其中一个子段中,且在这些子段中任取若干子段,它们包含的所有数的异或和不能为0. 思路:先处理出前缀异或,这样 ...
- Sasha and a Bit of Relax(前缀异或和+二维数组+思维)
Sasha likes programming. Once, during a very long contest, Sasha decided that he was a bit tired and ...
- codeforces 1041 e 构造
Codeforces 1041 E 构造题. 给出一种操作,对于一棵树,去掉它的一条边.那么这颗树被分成两个部分,两个部分的分别的最大值就是这次操作的答案. 现在给出一棵树所有操作的结果,问能不能构造 ...
- P5057 [CQOI2006]简单题 前缀异或差分/树状数组
好思路,好思路... 思路:前缀异或差分 提交:1次 题解:区间修改,单点查询,树状数组,如思路$qwq$ #include<cstdio> #include<iostream> ...
- Codeforces 1054D Changing Array 贪心+异或和
题意 给一个长度为\(n\)的位数为\(k\)的整数数列\(a\),一次操作可将任意\(a_i\)取反,问经过任意次操作后最多有多少个区间异或和不为\(0\) 分析 求出前缀异或和,区间异或和为\(0 ...
- Codeforces Round #365 (Div. 2) D 树状数组+离线处理
D. Mishka and Interesting sum time limit per test 3.5 seconds memory limit per test 256 megabytes in ...
随机推荐
- lnamp完整版[linux+apache2.4+php5.6.6+mysql5.6]
Lnamp环境安装实录 将采用的开源软件: Apache [WEB动态脚本服务器,做nginx的反向代理 8080端口] Tengine [WEB静态文件服务器 80端口] MySQL PHP .Ap ...
- jQuery入门教程-CSS样式操作大全
1.获取样式 2.设置样式 3.追加样式 4.移除样式 5.重复切换anotherClass样式 6.判断是否含有某项样式 7.设置 CSS 属性 参数 描述 name 必需.规定 CSS 属性的名称 ...
- Flask【第1篇】:Flask介绍
Flask入门 一.Flask介绍(轻量级的框架,非常快速的就能把程序搭建起来) Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Wer ...
- Spring Security初识
Spring Security与Spring Boot集成 添加依赖: <dependency> <groupId>org.springframework.boot</g ...
- python的setup.py文件
最近工作需要,用Cython写了*.pyx扩展,并将其编译成C文件,最后转换为so扩展,供python引用使用 distutils 编译,建立一个setup.py 的脚本from distutils. ...
- json对象之间的转化
json字符串转化为 1.使用JSON.parse()函数 使用eval()函数 2.json对象转化为json字符串 使用JSON.stringify()
- jetSonNano darknet ubdefined reference to 'pow',undefined reference to 'sqrtf'....
我在用CMakelist编译工程时,遇到了这个一连串基础数学函数找不到的问题,如下图所示: 我当时在工程中明明引用了 #include "math.h"头函数,这是因为你的工程在预 ...
- Java——GUI
[AWT] <1>AWT(Abstract Widow Toolkit)包含了很多类和接口,用于Java Application的GUI(Graphics User Interfac ...
- Improving Network Management with Software Defined Networking
Name of article:Improving Network Management with Software Defined Networking Origin of the article ...
- 为什么Redis可以方便地实现分布式锁
1.Redis为单进程单线程模式,采用队列模式将并发访问变成串行访问,且多客户端对Redis的连接并不存在竞争关系. 2.Redis的SETNX命令可以方便的实现分布式锁. setNX(SET if ...