
位运算
小菜鸡加油
菜鸡
什么都能折磨
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
P1939 【模板】矩阵加速(数列)
https://www.luogu.com.cn/problem/P1939 #include<iostream> #include<vector> #include<queue> #include<cstring> #include<cmath> #include<map> #include<set> #include<cstdio> #include<algorithm> #define de原创 2021-08-24 13:03:59 · 154 阅读 · 0 评论 -
B. GameGame(思维+博弈)
https://codeforces.com/problemset/problem/1383/B 思路: 开始以为是带博弈类的dp..发现不是... 首先贪心,问题转化成了谁先拿到二进制的最高位。于是我们先把按照位数从高到低把每一个位的1的个数处理出来。 如果该位是1个,那么先手获胜。 如果该位是2个,那么先手取1,不管后面的剩余个数是奇数,还是偶数,总会回到先手取下一个1或者后手取下一个1的状态,所以如果个数%2==0.那么当前高位对于两者得分没有影响。 如果该位是3个,那么先手先取..原创 2021-04-09 16:50:37 · 307 阅读 · 0 评论 -
D. Genius‘s Gambit(二进制构造+细节)
https://codeforces.com/contest/1492/problem/D 思路: 先说说自己错哪了吧.一个是细节,一个是构造的部分有问题了。 中间的x只要相同就好,而我最开始是默认给x为0,导致0不够的数据wa掉。 第二个就是k==0的特判,这个判了之后a==1的判直接就是no了。 然后就是构造这个 11xxx0 10xxx1 这个的时候,注意构造完这部分后1/0剩下的个数能否>0,不判就wa64 #include<iostream> #inclu原创 2021-03-02 12:47:43 · 260 阅读 · 0 评论 -
D. Zookeeper and The Infinite Zoo(位运算+规律)
https://codeforces.com/contest/1491/problem/D 题意:有一个序列1,2,3,……,正无穷。u可以到u+v当且仅当u&v=v。有q个查询,每个查询给出两个点u和v,问u是否能到v。 思路: 打个小范围的表找一下规律. 011-->101;011-->110;011-->100 110-->1000;110---->1010;110--->1100; 110 X-->111; 可以发现,1的数量不会变多,原创 2021-03-02 10:50:56 · 399 阅读 · 0 评论 -
小G的LY数对(思维+异或性质+折半优化trick)
https://ac.nowcoder.com/acm/contest/11160/D 思路: 暴力枚举b中每一个数,枚举两位要用于修改的位置,然后将修改后的数在a中哈希查询是否存在相同数。O(30*30*n).很卡常,但是哈希换成手写卡过去了。 但是还是要学习一下正解。 所求可以表示成:x⊕y=(1<<i)⊕(1<<k);(i!=k) 两边分别异或可以得到x⊕(1<<i)=y⊕(1<<k) (i!=k) 如果提前先存下x^(1<<原创 2021-02-27 23:48:09 · 248 阅读 · 0 评论 -
D. Walk on Matrix(二进制构造)
https://codeforces.com/problemset/problem/1332/D 思路: 首先要知道这个dp为啥是错的。 如果dp是转移和的话,那是对的。但是这个是错的,因为位运算不能保证之前的最大转移到这里就是最大。 观察一下这个dp实际上是怎么贪心转移的。 对于某处的(i,j)其转移是从上面和左边转移过来的,取其位运算大者。而二进制的性质就是高位的1大于其低位所有1之和。所以这个dp实际上是按照二进制的最高位的1来贪心的。 知道了这一点后。我们就可以尝试构造了。 往特殊原创 2021-02-14 12:46:35 · 169 阅读 · 0 评论 -
D. Little Girl and Maximum XOR(二进制贪心)
https://codeforces.com/problemset/problem/276/D 小于1000的最大数是0111,两者的异或可以变成全1 所以找最高位第一个不同的地方,剩下就可以贪心异或成全1 #include<iostream> #include<vector> #include<queue> #include<cstring> #include<cmath> #include<map> #include<原创 2021-02-09 18:59:40 · 224 阅读 · 0 评论 -
D. Ehab the Xorcist(异或奇偶性构造)
https://codeforces.com/problemset/problem/1325/D 思路: 异或的性质:相同为0,不同为1. 先把u这个数字转化成二进制形式发现有的是1,有的是0.那么1的那一位接下来如果这一位还要有1,那么只能是奇数,如果是0,那么只能是偶数。 于是开始先把v减去需要构造的u的至少大小,减完如果是<0那么就说明不可能构造成功。 不然就从高位开始,看是否整除当前位,整除的话看当前位是1还是0.。1的话次数要改成奇数。0的话次数要改成偶数。 统计完之后如果v!=原创 2021-02-09 12:19:17 · 291 阅读 · 0 评论 -
牛客挑战赛45友人(思维+二分+位运算)
思路:出了位运算其实需要按位进行考虑,不过一拿到这个题的时候变量较多,不好下手。 但是如果能定下一个量,就可以方便了。考虑二分z的上界,假如知道了z的上界,那么后面的式子就可以通过位运算的角度去枚举出最优解。 那么怎么去知道z的上界,由于是等差数列,所以整个式子可以变成一个单调递增的(sort)。而且贪心去考虑,优先把数字大的变成min(Ai,z)更优。于是sort从小到大序列,然后从后面开始,o(n)枚举长度,在一个长度内确定下来能否满足有z使得前面不变的和+后面变小的和<=y。从而获得z的..原创 2020-11-14 12:40:36 · 162 阅读 · 0 评论 -
A. XORwice(思维+位运算)
https://codeforces.com/contest/1421/problem/A 思路:二进制下考虑A和B。 对A和B同一位 如果是 1 0 ,那么x对应位不管取啥那一位最后加起来结果还是1 如果是 0 1,那么x对应位不管取啥那一位最后加起来结果还是1 如果是 0 0,那么x只要取0对应这位加来就是0 如果是 1 1,那么x只要取1对应这位加起来就是0 那么也就是说1 0-->1;0 1--->1;0 0--->0;1 1--->0;那么最终的结果就是a^b原创 2020-10-19 23:11:28 · 357 阅读 · 0 评论 -
C. Anu Has a Function(思维+位运算+贪心)
https://codeforces.com/contest/1300/problem/C 和昨晚这场的div2的B有异曲同工之妙。 思路:对每一个数位进行二进制位数的考虑。 f(x,y)=(x|y)−y 1 1 0 0 1 0 1 0 可以发现,只有在出现了x出现了一次1的时候,这个时候的位才不是0,不然其他三个情况这一位都是0.那么贪心去考虑哪个数字的最高位只出现了一次零。O(32n)枚举即可。 #include<iostream> #include<vector&..原创 2020-09-26 00:13:16 · 221 阅读 · 0 评论 -
B. Rock and Lever(思维+位运算+贪心)
https://codeforces.com/contest/1420/problem/B 思路:位运算嘛..刚前天做了一道类似的题。考虑最高位的贪心.为什么呢? 把数字按照二进制位去思考。 ai&aj≥ai⊕aj 比如 1 1 0 0 0 1 把这两个数进行题目的操作发现,&的操作会让最高位变成0,而异或会变成1,使得不满足题目的统计条件。 再比如 1 __ __ 1 __ ___ 每个位置1和0两个情况枚举每个情况会发现只有这种情况能满足条件。...原创 2020-09-25 23:04:47 · 652 阅读 · 0 评论 -
D. Vasya And The Matrix(位运算+矩阵构造)
https://codeforces.com/problemset/problem/1016/D 一个矩阵,你知道每行,每列异或后的结果,然后还原这个矩阵,如果不能还原输出NO。 假如一个矩阵 x1 x2 x3 a1 x4 x5 x6 a2 b1 b2 b3 会发现a1=x1^x2^x3,a2=x4^x5^x6;b1=x1^x4;b2=x2^x5;b3=x3^x6; 可以得到:a1^a2=x1^x2^x3^x4^x5^x6;b1^b2^b3=x1^x2^x3^x4^x5^x6.所以要YES和N原创 2020-09-13 15:47:56 · 306 阅读 · 1 评论