P3943 星空 区间异或差分】的更多相关文章

\(\color{#0066ff}{ 题目描述 }\) 逃不掉的那一天还是来了,小 F 看着夜空发呆. 天上空荡荡的,没有一颗星星--大概是因为天上吹不散的乌云吧. 心里吹不散的乌云,就让它在那里吧,反正也没有机会去改变什么了. 小 C 拿来了一长串星型小灯泡,假装是星星,递给小 F,想让小 F 开心一点.不过,有 着强迫症的小 F 发现,这串一共 n 个灯泡的灯泡串上有 k 个灯泡没有被点亮.小 F 决定 和小 C 一起把这个灯泡串全部点亮. 不过,也许是因为过于笨拙,小 F 只能将其中连续一…
洛谷P3943 星空 题目背景 命运偷走如果只留下结果, 时间偷走初衷只留下了苦衷. 你来过,然后你走后,只留下星空. 题目描述 逃不掉的那一天还是来了,小 F 看着夜空发呆. 天上空荡荡的,没有一颗星星——大概是因为天上吹不散的乌云吧. 心里吹不散的乌云,就让它在那里吧,反正也没有机会去改变什么了. 小 C 拿来了一长串星型小灯泡,假装是星星,递给小 F,想让小 F 开心一点. 不过,有 着强迫症的小 F 发现,这串一共 n 个灯泡的灯泡串上有 k 个灯泡没有被点亮. 小 F 决定 和小 C…
题目传送门 题目背景 命运偷走如果只留下结果, 时间偷走初衷只留下了苦衷.你来过,然后你走后,只留下星空. 题目描述 逃不掉的那一天还是来了,小$F$看着夜空发呆.天上空荡荡的,没有一颗星星——大概是因为天上吹不散的乌云吧.心里吹不散的乌云,就让它在那里吧,反正也没有机会去改变什么了.小$C$拿来了一长串星型小灯泡,假装是星星,递给小$F$,想让小$F$开心一点.不过,有着强迫症的小$F$发现,这串一共$n$个灯泡的灯泡串上有$k$个灯泡没有被点亮.小$F$决定和小$C$一起把这个灯泡串全部点亮…
好思路,好思路... 思路:前缀异或差分 提交:1次 题解:区间修改,单点查询,树状数组,如思路$qwq$ #include<cstdio> #include<iostream> using namespace std; #define R register int #define ull unsigned long long #define ll long long #define pause (for(R i=1;i<=10000000000;++i)) #define…
Consecutive Sum 又来水一发blog... 本来是昨天补codechef的题,最后一道题是可持久化字典树,然后去黄学长博客看了看 觉得字典树写法有点不太一样,就想着用黄学长的板子写码几道题吧... 最后发现...其实是可持久化字典树跟普通字典树写法不一样...我好傻逼... 区间异或和 可以先把前缀异或和插入到字典树中,然后去贪心 求最大值就是要求从高到低尽量不一样 高位不一样优先 用一个bit数组来存放好看多了 偷偷摸摸顺便学了快读板子...虽说可能没啥用... #include…
<题目链接> 题目大意:给定一个序列,现在求出两段不相交的区间异或和的最大值. 解题分析: 区间异或问题首先想到01字典树.利用前缀.后缀建树,并且利用异或的性质,相同的两个数异或变成0,从而将前缀操作转化为区间操作,比如:$(a_1 \oplus a_2)\oplus(a_1 \oplus a_2 \oplus a_3 \oplus a_4) = a_3 \oplus a_4$.然后利用简单的$dp$,$predp[i]$记录前$[1~i]$ 任意区间的区间异或最大值(注意不是前缀),$nx…
E. XOR and Favorite Number time limit per test 4 seconds memory limit per test 256 megabytes input standard input output standard output Bob has a favorite number k and ai of length n. Now he asks you to answer m queries. Each query is given by a pai…
题目大意 著名游戏设计师vfleaking,最近迷上了Nim.普通的Nim游戏为:两个人进行游戏,N堆石子,每回合可以取其中某一堆的任意多个,可以取完,但不可以不取.谁不能取谁输.这个游戏是有必胜策略的.于是vfleaking决定写一个玩Nim游戏的平台来坑玩家. 为了设计漂亮一点的初始局面,vfleaking用以下方式来找灵感:拿出很多石子,把它们聚成一堆一堆的,对每一堆编号1,2,3,4,...n,在堆与堆间连边,没有自环与重边,从任意堆到任意堆都只有唯一一条路径可到达.然后他不停地进行如下…
Tree Ming and Hong are playing a simple game called nim game. They have nn piles of stones numbered 11 to nn ,the ii-th pile of stones has a_iai​ stones. There are n - 1n−1 bidirectional roads in total. For any two piles, there is a unique path from…
题目链接 题意 : 中文题 分析 : 首先引入两篇写的很好的题解 题解一.题解二 听说这种和异或相关区间求和的问题都尽量按位考虑 首先第一问.按二进制位计贡献的话.那么对于第 k 位而言 其贡献 = 区间异或和第 k 位为 1 的子区间个数 * 2^k 而能产生贡献的子区间必定满足 xorSum(R) ^ xorSum(L-1) 第 k 位为 1 注 : xorSum 为前缀异或和 要快速计算这个东西其实很简单.先计算出 xorSum 然后枚举右端点 R .累计到目前为止每个位的 0 和 1 的…
题解 一道思维量巨大的题,很烧脑 考虑异或差分,设 \(d_i=a_i\;\;xor\;\;a_{i-1}\),那么对于翻转 \(a_i\sim a_j\) 就相当于 \(b_i\) 和 \(b_{j+1}\) 异或 \(1\) 那么我们最后要求的异或序列就全是 \(0\),那么想办法消去 \(1\),考虑状压 因为我们只想消去 \(1\),所以我们只需考虑异或为 \(1\) 的位置,而这最多有 \(2k\) 位,所以我们对这状压. 那么我们考虑由 \(i\) 位异或到 \(j\) 位需要多少步…
题目背景 命运偷走如果只留下结果, 时间偷走初衷只留下了苦衷. 你来过,然后你走后,只留下星空. 题目描述 逃不掉的那一天还是来了,小 F 看着夜空发呆. 天上空荡荡的,没有一颗星星——大概是因为天上吹不散的乌云吧. 心里吹不散的乌云,就让它在那里吧,反正也没有机会去改变什么了. 小 C 拿来了一长串星型小灯泡,假装是星星,递给小 F,想让小 F 开心一点.不过,有 着强迫症的小 F 发现,这串一共 n 个灯泡的灯泡串上有 k 个灯泡没有被点亮.小 F 决定 和小 C 一起把这个灯泡串全部点亮.…
传送门 观察题目数据,发现 k ≤ 8 ,可能可以从这里入手解决问题 考虑状态压缩 但是我们每次操作都会让一连串的序列改变,而序列的每个状态都是必须要知道的 很麻烦,所以考虑如何把一段区间表示地简单一些 差分,把原序列转化成差分序列,原序列亮为0,暗为1,差分时用上一个数异或下一个数 那么原数列中一整段的数翻转在差分序列中就变成了几个数的变化 比如我们把第 l 到 r 的数翻转在差分序列中就是把第 l 个数翻转,第 r+1 个数翻转 在差分序列中的任意状态下都是这样 然后考虑结束状态,显然结束状…
好题(爆搜和puts("2")一个分(雾)),不得不说思维真的强. 首先发现区间翻转很难受,考虑用差分(异或满足可逆性),注意是从0到n+1 然后就转化题意,操作改为选取距离为L的两个数异或1,我们需要把所有的1变成0(因为1代表前后两个数不同,0代表相同) 分情况考虑 不可能同时让两个0异或成1,所以: 1.一个0,一个1可以视为将1移动到0的位置 2.两个1可以认为将它俩全部消除 考虑一下可以bfs预处理出两个1消除的代价,时间复杂度O(nmk). 进一步转化题意: 给定n个物品,…
一道很好的锻炼思维难度的题,如果您能在考场上直接想出来的话,提高组450分以上就没问题了吧.(别像作者一样看了好几篇题解才勉强会) 先提取出题目大意:给定一个长度n<=40000的01串,其中1的个数<=8,有m种操作,每次操作都是把一个该操作对应长度的区间取反,或者说异或上1,求使整个串变为只有0的串的最小操作次数. 首先对于一次操作,肯定不能暴力地一个个去取反吧.优化区间操作,要么用数据结构,要么用前缀和或差分.其实这里可以用差分来优化:建立新的下标最大为n+1.下标正常从1开始的d数组,…
<题目链接> 题目大意: 给你n个数,现在让你选一些区间出来,对于每个区间中的每一种数,全部都只能出现在这个区间. 每个区间的价值为该区间不同的数的异或值之和,现在问你这n个数最大的价值是多少. 解题分析:因为要同一种的所有数只能出现在同一区间,所以我们先对这$n$个数进行预处理,得到他们每种数的最左边的坐标和最右边的坐标.因为数据只有5000,所以状态可以比较暴力地更新,枚举最后一个异或的区间进行更新,用dp值来记录. $dp[i]$表示$[1,i]$中异或值之和的最大值.第$i$个可以选或…
题目链接:https://atcoder.jp/contests/abc121/tasks/abc121_d 题目很裸(Atcoder好像都比较裸 就给一个区间求异或和 n到1e12 肯定不能O(n)推 那肯定得通过异或的一些性质 用$f\left( a,b\right)$表示[a,b]区间的异或和 我只观察出了$f\left( 2^{a},2^{b}-1\right)$的异或和肯定为0. 通过$f\left( 2^{a},2^{a+1}-1\right)$每一位都会出现偶数次 例如 [4,8)…
To 洛谷.2574 XOR的艺术 题目描述 AKN觉得第一题太水了,不屑于写第一题,所以他又玩起了新的游戏.在游戏中,他发现,这个游戏的伤害计算有一个规律,规律如下 1. 拥有一个伤害串为长度为n的01串. 2. 给定一个范围[l,r],伤害为伤害串的这个范围内中1的个数 3. 会被随机修改伤害串中的数值,修改的方法是把[l,r]中的所有数xor上1 AKN想知道一些时刻的伤害,请你帮助他求出这个伤害 输入输出格式 输入格式: 第一行两个数n,m,表示长度为n的01串,有m个时刻 第二行一个长…
题目传送门 题目大意,给你一串灯,按一下开关可以将灯的状态取反(开变成关,关变成开).维护这个序列的两种操作:询问区间内有多少灯是开着的,区间按灯. 开始想的是分别维护区间内0的数量,1的数量,两个懒标记.后来真正写到维护懒标记的时候却感觉不太可行,因为你并不精确的知道区间内哪里是开着,哪里是关着的. 其实我们本质上就是在维护整个异或序列.因为把每个位置取反,实际上就是在进行异或运算.(0->1,1->0).这样我们在区间修改的时候,只需要维护区间内1的个数,把它用区间长度减去原来的值便得到新…
D. Mishka and Interesting sum time limit per test 3.5 seconds memory limit per test 256 megabytes input standard input output standard output Little Mishka enjoys programming. Since her birthday has just passed, her friends decided to present her wit…
原题传送门 本题大意:给定n个数字和m个操作,操作共有两种,第一种是求解区间l到r上元素的和,第二种是将区间l到r的元素都异或一个x,作为某个位置的新值. 很容易想到线段树维护区间和,但是我们发现,在区间更新的时候,并没有办法更新,因为我们并不能通过一个区间的和还有我们要异或的值得到这个区间新的异或和,那么我们考虑其他方法. 下面讲述的这个方法,对于值域不大于1 << 20的数据,我们选择用20个数组保存某一个区间k中第 i 位的1的个数,为什么要这么搞呢? 对于第i位,如果区间k的第 i 位…
小阳的贝壳 如果线段树要维护区间gcd 这个很简单,但是如果有了区间加,维护gcd 就比较麻烦了. 这个首先可以证明的是 gcd(x,y,z)=gcd(x,y-x,z-y)   这个可以推到 n 个 证明过程传送门 这个就和差分扯上关系了   可以看一下差分 差分传送门 上面的这两个博客基本上告诉我们这两个题目怎么写了. 首先我们对于每一个数进行处理,把这个数变成差分的形式, 因为最后的结果我们要 gcd(x,y-x,z-y) 所以我们要求和,还有求gcd ,这个就会有两个查询,一个查询sum,…
题意:给出n个数,求它的连续子序列中,满足下列公式,(l,r)的对数有多少对 Al xor Al+1 xor … xor Ar=Al + Al+1 + … + Ar 思路:由题意可以得到,连续子序列,如果在ai这个数不符合公式的话,即之后的符合条件的对数中将不在需要这个元素,所有枚举元素来计算符合公式的对数 . 难以理解的就是异或等效于加法与减法(!!!) #include <bits/stdc++.h> using namespace std; #define ll long long #d…
POJ3225.Help with Intervals 这个题就是对区间的各种操作,感觉这道题写的一点意思都没有,写到后面都不想写了,而且更神奇的是,自己的编译器连结果都输不出来,但是交上就过了,也是令人头大的操作,这题没意思,不要写了.我写到后面就写不下去了,直接去看了别人的代码... 代码: #include<iostream> #include<cstring> #include<cstdio> #include<cmath> #include<…
啦啦啦啦——又是五月天的歌,题目传送门 这道题比之前两道真的不是同一级别的,这里我这个蒟蒻也讲不清,不如看下这位大佬的吧,他的写的已经非常清楚了:Z-Y-Y-S,这里我就只放下我的代码,也是按照这位大佬的思路做的: #include<cstdio> #include<cstring> #include<cmath> #include<queue> #include<cstdlib> #include<iostream> #includ…
Problem 11: Switching Lights [LongFan, 2008] Farmer John tries to keep the cows sharp by letting them play with intellectual toys. One of the larger toys is the lights in the barn. Each of the N (2 <= N <= 500) cow stalls conveniently numbered 1..N…
其实我做的是洛谷的P3943,但是听说fstqwq窃题...... 题目描述: 小 C 拿来了一长串星型小灯泡,假装是星星,递给小 F,想让小 F 开心一点.不过,有 着强迫症的小 F 发现,这串一共 n 个灯泡的灯泡串上有 k 个灯泡没有被点亮.小 F 决定 和小 C 一起把这个灯泡串全部点亮. 不过,也许是因为过于笨拙,小 F 只能将其中连续一段的灯泡状态给翻转--点亮暗灯 泡,熄灭亮灯泡.经过摸索,小 F 发现他一共能够翻转 m 种长度的灯泡段中灯泡的状态. 小 C 和小 F 最终花了很长…
总算不再是能用暴力卡常/随机化水过的好T3了. 说是打了两个标签,实际上最关键的是题意转化. 如果你丝毫不转化的话也可以: #include<bits/stdc++.h> using namespace std; ][],b[],k,n,m,x[],f=,mx; int main(){ scanf("%d%d%d",&n,&k,&m); ;i<=k;++i)scanf("%d",&x[i]); ;i<=m;++…
差分数组 定义 百度百科中的差分定义 //其实这完全和要讲的没关系 qwq 进去看了之后是不是觉得看不懂? 那我简单概括一下qwq 差分数组de定义:记录当前位置的数与上一位置的数的差值. 栗子 容易发现的是,\(\sum_{j=1}^{i} b_j\)即代表\(a_i\) 的值. \((\sum\) 即代表累加.) 思想 看到前面的\(\sum\) 你一定会发现这是前缀和! 那你认为这是前缀和? 的确是qwq. 实际上这并不是真正意义上的前缀和. 前缀和的思想是 根据元素与元素之间的并集关系(…
https://codeforces.com/contest/587/problem/E 一个序列, 1区间异或操作 2查询区间子集异或种类数 题解 解题思路大同小异,都是利用异或的性质进行转化,std和很多网友用的都是差分的思想,用两棵线段树 第一棵维护差分序列上的线性基,第二棵维护原序列的异或区间和,两者同时进行修改 考虑两个序列 $(a,b)(d,e)$,按照std的想法,应该是维护$(0 \^ a,a \^ b)(0 \^ d,d \^ e)$ 然后合并首尾变成$(0 \^ a,a \^…