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 ...
随机推荐
- 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。 你可以假设 nums1 和 nums2 不会同时为空。
class Solution { public double findMedianSortedArrays(int[] A, int[] B) { int m = A.length; int n = ...
- STM32内部时钟设置-寄存器版
STM32寄存器版本——内部时钟设置 同时要记得把延时初始化函数设置好 //系统时钟初始化函数 //pll:选择的倍频数,从2开始,最大值为16 //pll:选择的倍频数,这里使用内部时钟,PLL为4 ...
- java上传大文件(局域网环境)
文件上传是最古老的互联网操作之一,20多年来几乎没有怎么变化,还是操作麻烦.缺乏交互.用户体验差. 一.前端代码 英国程序员Remy Sharp总结了这些新的接口 ,本文在他的基础之上,讨论在前端采用 ...
- jsp大文件下载+断点续传
以多线程.断点续传方式下载文件,经常出现下载下来的文件大小和服务端一致,但是却无法正常打开的现象,搞了很久,贴下我的实现方式,请各位多多指教思路:1.将下载文件的处理放在自定义的线程类中,每下载一个文 ...
- 论文keywords和规则匹配的baseline
详细的思路可以参照小论文树立0317 关键词分为以下几类: t/****一些通用的过滤词,这些通用的过滤词可以使用和节目一起出现的词语,结合tf-idf看出来么?*****/ public st ...
- uniapp开发
问题1:去掉导航条 给一个单独的页面隐藏顶部的 导航栏 可以在pages.json里 单独的路由style下面配置 "app-plus": {"titleNView&q ...
- Springboot-H2DB
为什么在Springboot中用H2DB 用Springboot开发需要连接数据库的程序的时候,使用H2DB作为内存数据库可以很方便的调试程序. 怎么用 1.加入依赖 <dependency&g ...
- 阿里云配置通用服务的坑 ssh: connect to host 47.103.101.102 port 22: Connection refused
1.~ wjw$ ssh root@47.103.101.102 ssh: connect to host 47.103.101.102 port 22: Connection refused ssh ...
- win7下面安装flex和bison
通过Cygwin工具进行安装 下载地址cygwin 安装截图: 搜索flex,选择相应的版本进行安装 搜索bison 然后下一步 安装完成后,将D:\cygwin64\bin路径添加到PATH环境变量 ...
- php 判断访问是否是手机或者pc
php代码 function isMobile() { $user_agent = $_SERVER['HTTP_USER_AGENT']; $mobile_agents = Array(" ...