跳到主要内容

【题单】位运算(基础/性质/拆位/试填/恒等式/贪心/脑筋急转弯)

来源: 分享丨【题单】位运算(基础/性质/拆位/试填/恒等式/贪心/脑筋急转弯)

前置知识: 分享|从集合论到位运算,常见位运算技巧分类总结!

创建题单的原因: 容斥原理 划分型 DP【力扣周赛 393】 的Q3 我直接被秒杀!, Q4也是位运算(我看都没有看); 因此学习位运算十分有必要!

3315. 构造最小位运算数组 II (lowbit)

基础题

与或(AND/OR)的性质

异或(XOR)的性质

拆位 / 贡献法

LogTrick 技巧

LogTrick: 问一个数组的所有子数组的元素 AND/OR/lcm/gcd 的值为 k (或者是某个可能含有子数组的表达式的值) 的最近元素/子数组个数(二分right-left/三分(滑窗))

LogTrick利用AND/OR/lcm/gcd的性质, 使得时间复杂度为 O(nlogn)O(n\log{n})

视频讲解可以看周赛400 Q4: Q4-3171. 找到按位或最接近 K 的子数组

试填法

恒等式

思维题(贪心、脑筋急转弯等)

其它

int getSum(int a, int b) {
int tmp = (a & b) << 1; // 记得要左移一位!
int res = a ^ b; // 相加(不理会进位的)
while (tmp) { // 是否要进位
int cache = tmp;
tmp = (res & tmp) << 1; // 进位
res = res ^ cache; // 相加(不理会进位的)
}
return res;
}
C++
请作者喝奶茶:
Alipay IconQR Code
Alipay IconQR Code
本文遵循 CC CC 4.0 BY-SA 版权协议, 转载请标明出处
Loading Comments...