![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
位运算
酷酷的Herio
这个作者很懒,什么都没留下…
展开
-
B. Rock and Lever(位运算)
B. Rock and Lever(位运算)思路:位运算。考虑ai,aja_i,a_jai,aj的最高为1的位pi,pjp_i,p_jpi,pj。如果pi≠pjp_i\neq p_jpi=pj则ai&aj<ai⊕aja_i\&a_j<a_i\oplus a_jai&aj<ai⊕aj。因为右边的最高位变成为1,而左边是0。所以只有当pi=pjp_i=p_jpi=pj才有贡献,显然贡献是cnt(cnt−1)2\dfrac{cnt(c原创 2020-10-04 21:05:40 · 444 阅读 · 0 评论 -
线性基的整理.
线性基的一些性质:1.原序列中任意元素都可被线性基中一些元素异或得到.2.线性基中不存在异或和为0的非空子集.3.线性基元素个数唯一,在满足性质1下,元素个数最少.应用:1.求序列中选取一些元素的最大异或和.利用性质1+贪心从高位向低位选.2.求第kkk小异或和.将线性基修改一下,使得对应的位提供最高位的1,然后将kkk分解成二进制进行异或即可.#include<bits/stdc++.h>using namespace std;typedef long long ll;原创 2020-07-17 11:06:31 · 353 阅读 · 0 评论 -
牛牛的棋盘(容斥原理)
牛牛的棋盘(容斥原理)传送门前话:太菜了太菜了,想到了容斥,以为很复杂就没写思路:容斥原理。令集合SriS_{r_i}Sri表示棋子不在第iii行的方案数,同理SciS_{c_i}Sci表示棋子不在第iii列的方案数。根据容斥原理有:ans=∣Sr1‾∩Srn‾∩Sc1‾∩Scm‾∣=tot−∣Sr1∪Srn∪Sc1∪Scm∣ans\\=|\overline{S_{r_1}}\cap\overline{S_{r_n}}\cap\overline{S_{c_1}}\cap\overline原创 2020-07-11 22:57:21 · 600 阅读 · 2 评论 -
P3917 异或序列(位运算)
P3917 异或序列(位运算)传送门题意:给定序列求所有区间异或和的和。思路:经典异或题,显然需要按照位来计算贡献。我们需要先预处理前缀异或和,这样便于计算区间。对于当前位iii,我们只需看这个区间的异或和的该位是否为1,也就是该区间该位为1的个数为奇数,记cnt[j]cnt[j]cnt[j]为前jjj个数异或和位为111的个数,显然对于区间[l,r][l,r][l,r]我们只需让cnt[r]⊕cnt[l−1]cnt[r]\oplus cnt[l-1]cnt[r]⊕cnt[l−1]为奇数,即cnt[l原创 2020-07-02 16:06:32 · 569 阅读 · 1 评论 -
P5390 [Cnoi2019]数学作业(位运算&组合数学)
P5390 [Cnoi2019]数学作业(位运算&组合数学)传送门题意:求给定集合所有子集元素异或和的求和。$ans=\sum\limits_{s_i\subset S}xor\ a_i,a_i\in s_i $思路:考虑每个位上的贡献次数。设对于集合SSS,当前位上为111的个数为xxx,显然我们需要选出奇数个111才能使该位异或为111,其他为000的数可选可不选,方案数为:2n−x2^{n-x}2n−x,显然对于xxx个1,选出奇数个1和偶数个111方案是一样的,因为对于xxx为奇数原创 2020-07-02 12:38:13 · 476 阅读 · 0 评论 -
AtCoder Beginner Contest 172.F - Unfair Nim
AtCoder Beginner Contest 172.F - Unfair Nim传送门思路:异或的性质+构造。显然题目背景是NimNimNim游戏,我们目的是让后手胜,显然nnn堆石子异或为000时,后手必胜。接下我们需要构造来使nnn堆石子异或和为000。因为题目要求我们只能将移动第一堆石子给第二堆石子。我们记第一堆和第二堆石子个数分别为a,ba,ba,b。所以我们可以预处理第333堆到第nnn堆石子的异或和,我们记为ccc。设需要移动的石子数为xxx个。即我们要使:(a−x)⊕(b原创 2020-06-28 15:28:02 · 895 阅读 · 0 评论 -
Rinne Loves Xor (异或和&二进制)
Rinne Loves Xor (异或和&二进制)题目传送门思路:AC代码:#include<cstdio>#include<cstring>using namespace std;typedef long long ll;const int N=1e5+5,mod=1e9+7;int a[N],b[N];ll c[N],da[35][2],d...原创 2020-05-01 10:39:04 · 376 阅读 · 0 评论 -
Codeforces Round #631 (Div. 2) D. Dreamoon Likes Sequences (位运算&组合数学)
Codeforces Round #631 (Div. 2) D. Dreamoon Likes Sequences题目传送门题意:给定d,mod,求所有满足ai在[1,d]且异或运算后bi<bi+1的所有数组A的个数。思路:AC代码#include<bits/stdc++.h>using namespace std;typedef long long ll;i...原创 2020-04-04 11:35:27 · 428 阅读 · 0 评论