这周就刷了位运算,和前缀和,和差分
恰好昨晚做的CF里就有一个位运算的题,又恰好我还是不会做。
做题的时候没想到,因为最近还练了点递归,我就一直觉得它像递归的题,想跑偏了
1、与1异或,可以使特定位翻转 ,与0异或,保留其值 0101 0101 ^ 1111 0000 = 1010(翻转) 0101(保留)
2、1除了最低位,其他位都为0,所以按位与结果取决于n最后一位,如果n最后一位是1,则结果为1,反之结果为0
通常用来判断当前位是否为 1
3、0的二进制是: 00000000……… -1的二进制是:1111111111…………
只用0和-1进行位运算,就可以得到任何一位的任何情况进行位运算的结果
4、状态压缩dp原来就是位运算的动态规划
当你有20个点,想要判断他是否用过,我门通常会用数组的0,1来记录
原来是这样的道理,我们用一个二进制串00110011来表示
如果只有一种状态,数组当然可以表示,但是如果多种状态,20个点就有2 ^ 20 种,显然串串更好
5、学会了要从题中找线索,题目都给了 4 ^ 0+4 ^ 2=1+16 了,就应该猜到这是进制问题
6、还学会了找规律不要以偏概全,不然就呢几个小例子,根本验证不出来错在哪了
7、做了一个题,错误答案,但是很多数据都过了,得了80分,这种情况往往不是思路有问题了
回去又查看了一遍数据,果然因为数组没有long long
8、以前做过一个牛牛的题,今天又遇到了,新方法
差分就是用来处理区间问题的,原来做的时候,就是把这一个区间都遍历一遍(当时数据小应该)
而差分,就标记两个端点,不详细说了,反正真不错 ,时间复杂度缩成一维



