位运算
文章平均质量分 50
位运算
EschatonAyane
风会带走我曾经存在过的证明
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【51nod 2493】二进制距离之和【位运算】
linklinklink 分析: n2n^2n2暴力比较 可以将两数xorxorxor后看有多少个111 复杂度 O(n2logn)O(n^2logn)O(n2logn) 也可以把每个数二进制拆开 若该位有cnt1cnt_1cnt1个111 cnt0cnt_0cnt0个000 最后就会产生cnt0×cnt1cnt_0\times cnt_1cnt0×cnt1个不同 复杂度 O(nlogn)O(nlogn)O(nlogn) CODE: #include<iostream> #includ.原创 2022-02-25 20:59:32 · 561 阅读 · 0 评论 -
【51nod 3062】n皇后问题 V2【位运算dfs】
linklinklink 分析: 位运算加速nnn皇后 可以用三个二进制数记录每行上 每列以及两条斜线的占用情况 那么三个或起来 就得到了该行的所有禁位 取反就是所有可以放的位 得出每行可以放的位后 用lowbitlowbitlowbit即可找出放的位置 CODE: #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #define reg register us.原创 2022-02-25 20:38:19 · 438 阅读 · 0 评论 -
【51nod P2527】Or 和 Sum【位运算】
linklinklink 分析: 众所周知 a∣b+a&b=a+ba|b+a\&b=a+ba∣b+a&b=a+b 判断a&ba\&ba&b为111的位在a∣ba|ba∣b也为111即可 CODE: #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #define reg register using namespa.原创 2022-02-19 16:41:00 · 231 阅读 · 0 评论 -
【51nod P3395】n位格雷码【位运算】
linklinklink 分析: nnn位格雷码最多有2n2^n2n个 对于一个二进制数xxx 若xxx的第iii位与第i+1i+1i+1位相同 则格雷码的第i+1i+1i+1位为000 否则为111 很显然 这就是异或 CODE: #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #define reg register using namespace st..原创 2022-02-19 16:01:55 · 302 阅读 · 0 评论 -
【51nod P3047】位移运算【位运算】
linklinklink 分析: 如果aaa可以变成bbb 那么去掉前导后缀000的b′b'b′ 一定是aaa的子串 判断子串 对aaa进行>>>>>>得到a′a'a′ 若a′&b′=b′a'\&b'=b'a′&b′=b′ 说明b′b'b′为111的位在a′a'a′也是111 看a′xor b′a'xor~b'a′xor b′得到的ccc 若ccc最低位的111比b′b'b′最高位的111高 b′b'b′才为a′a'a′的子.原创 2022-02-19 15:27:40 · 305 阅读 · 0 评论 -
【51nod P2653】区间xor【位运算】
linklinklink 分析: 记录[1,b][1,b][1,b]和[1,a−1][1,a-1][1,a−1]的异或值A,BA,BA,B 和前缀和类似 答案就是A xor BA~xor~BA xor B CODE: #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #define reg register using n.原创 2022-02-19 09:30:49 · 484 阅读 · 0 评论 -
【51nod P2102】或减与【位运算】
linklinklink 分析: 或减与 就是异或 也可以直接算 CODE: #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #define reg register using namespace std; typedef long long ll; ll a,b; int main(){ scanf("%lld%lld",&a,&b); .原创 2022-02-19 09:12:46 · 367 阅读 · 0 评论 -
【51nod P3216】授勋【位运算】
linklinklink 分析: 勋章都是222的幂次 所以就是问每个数的二进制有多少个111 CODE: #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #define reg register using namespace std; typedef long long ll; int n,x; int main(){ scanf("%d",&..原创 2022-02-19 08:56:54 · 227 阅读 · 0 评论 -
【51nod P2106】一个奇数次【位运算】
linklinklink 分析: 异或 一个数出现偶数次 它们的异或值就为000 否则为这个数 CODE: #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #define reg register using namespace std; typedef long long ll; int n,x,ans; int main(){ scanf("%d",&.原创 2022-02-19 08:49:39 · 359 阅读 · 0 评论
分享