————位运算
BAJim_H
比孤独更可悲的事情,就是根本不知道自己很孤独,或者分明很孤独,却把自己都骗得相信自己不孤独。
展开
-
玩诈欺的小杉(详细解析+代码)
Description 是这样的,在小杉的面前有一个N行M列的棋盘,棋盘上有N*M个有黑白棋的棋子(一面为黑,一面为白),一开始都是白面朝上。 小杉可以对任意一个格子进行至多一次的操作(最多进行N*M个操作),该操作使得与该格同列的上下各2个格子以及与该格同行的左右各1个格子以及该格子本身翻面。 例如,对于一个5*5的棋盘,仅对第三行第三列的格子进行该操作,得到如下棋盘(0表原创 2016-01-24 08:58:41 · 1606 阅读 · 0 评论 -
[JZOJ4711] Binary
Description Solution60%因为区间固定,所以并不需要线段树维护一个数组,记录每个二进制位是1的有多少个。然后修改就暴力改,询问就直接询问就好100%继续按照上面的思路,如果x>0x>0怎么办?还是按照每一位来,我们只需要看看减去了这个数每一位还有多少个1可以每一位维护一个树状数组,以原数组值作为下标,第ii位维护00~2i+1−12^{i+1}-1,大于2i+1−12^{i+1原创 2016-08-17 20:29:11 · 365 阅读 · 0 评论 -
[JZOJ4937] 与运算
Description Solution设F[i]F[i]表示当前前若干项异或起来为ii的最大答案考虑转移。 显然我们可以只转移ii的一个二进制位。找一位去掉,设去掉后为jj,并求出有多少个aa能包含jj而不包含ii(包含指ii的所有1的位在这些aa上对应的位也是1)设num[i]num[i]表示有多少个包含ii的。 显然包含jj一定包含ii 因此求的值就是num[j]−num[i]num[原创 2017-01-13 21:36:12 · 409 阅读 · 0 评论 -
[JZOJ5284] 超级翻转
Description 输出任意一种即可,题目有SPJSolution可以考虑先枚举终点。那么一条路径我们可以通过绕圈来修改它具体而言,从任意一个点,走到一个格子的左上角,绕着这个格子走一圈,再原路返回,这样相当于只将这个格子四个方向的格子取反对于起点到枚举的终点的路径,随便怎么走,都可以通过上面绕格子的方式修改成所有的路径那么枚举终点随便走了一条路径后,原问题转化成可以选择一些格子,将这个格原创 2017-08-16 22:56:15 · 187 阅读 · 0 评论 -
[JZOJ5352]【NOIP2017提高A组模拟9.7】计数题
Description给定N个点,每个点有权值a[i]。 定义一条无向边x,y,权值为a[x] xor a[y] 求这N个点构成的完全图的最小生成树 的边权和以及它的方案数,方案数对1e9取模 N<=105,0≤a[i]≤230N<=10^5,0\leq a[i]\leq 2^{30}Solution既然是异或,我们可以按位考虑。用分治的思想 从高位到低位扫,对于当前位可以将处理的点分成两部原创 2017-09-08 22:53:46 · 358 阅读 · 0 评论 -
快速沃尔什变换(FWT)
Preface我们知道,对于下面的式子f(n)=∑i⊕j=ng(i)h(j)f(n)=\sum\limits_{i⊕j=n}g(i)h(j)f(n)=i⊕j=n∑g(i)h(j)当⊕⊕⊕为+运算时,可以用FFT优化当⊕⊕⊕为位运算(or,and,xor)时是否也有一种优化呢答案是肯定的。FWT首先,对于多项式,我们定义A∗BA*BA∗B为某一种位运算卷积显然它满足交换律、结合律...原创 2018-10-24 11:01:37 · 1162 阅读 · 0 评论 -
[JZOJ5952] 凯旋而归 ([BZOJ 5092]【Lydsy1711月赛】分割序列)【高维前缀和】【DP】
Description对于一个长度为m的序列a,记f(a)=max((a1 xor ... xor ai)+(ai+1 xor ... xor an)),i∈[0,m]f(a)=\max((a_1\ xor\ ...\ xor\ a_i)+(a_{i+1}\ xor\ ...\ xor\ a_n)),i\in[0,...原创 2018-11-06 15:00:48 · 265 阅读 · 0 评论