随笔分类 -  基础算法---位运算

摘要:"POJ1845 Sumdiv" Sol: 约数个数和$sumdiv=(1+p_1+p_1^2+\dots + p_1^{c_1}) \dots (1+p_k+p_k^2+\dots + p_k^{c_k})$ 其中每一项都是一个首项为1,公比为$p_i$的等比数列的和,即 $1 \frac{1 p 阅读全文
posted @ 2018-10-09 23:58 dprswdr 阅读(159) 评论(0) 推荐(0)
摘要:"JOYOI1266 费解的开关" Sol: 首先观察题目性质: 当第一行的方案固定时,接下来所有行的方案都已经固定。因为若第i行的第j列为0,则必须点击第i+1行第j列才能将该0变为1。 而第一行的所有点击方案总数为$2^5=32$,可以将所有方案枚举依次考虑。剩下几行递推求出总共点击次数,然后判 阅读全文
posted @ 2018-10-09 23:33 dprswdr 阅读(206) 评论(0) 推荐(0)
摘要:传送门 思路:我们用一个n位二进制数表示当前疾病的状态:0表示已经治愈,1表示未治愈。通过BFS遍历所有状态,对于每个状态x,我们枚举所有解药,若当前解药i能够治愈第j种疾病,就将x的第j位赋值为0;若当前解药i能够使人得第j种疾病,就将x的第j位赋值为1。注意,别忘了对状态判重!若第一次所有疾病都 阅读全文
posted @ 2018-08-05 13:45 dprswdr 阅读(251) 评论(0) 推荐(0)
摘要:1.补码表示: ~x=-1-x 2.自然溢出:unsigned long long 自动对2^32取模,可以用来hash。 3.基本位运算操作: 左移:1<<n=2^n n<<1=2n,n<<2=4n,n<<3=8n。。。 算术右移:n>>1=n/2 ,n>>4=n/16。。。算术右移=除以2向下取 阅读全文
posted @ 2018-08-04 22:26 dprswdr 阅读(430) 评论(0) 推荐(0)
摘要:传送门 思路: 1.状态:由于经过的点是一个集合,所以我们用dis[i][j]表示经过的点的状态为i,且当前位于点j时的最短Hamilton路径,其中i为一个二进制整数,用来存储经过的点的情况。为了方便位运算,我们的点的标号为0~n-1。 2.边界:dis[1][0]表示当前在起点0的最短Hamil 阅读全文
posted @ 2018-08-04 21:56 dprswdr 阅读(207) 评论(0) 推荐(0)
摘要:Raising Modulo Numbers Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 9061 Accepted: 5522 Description People are different. Some secretly 阅读全文
posted @ 2018-02-01 23:34 dprswdr 阅读(205) 评论(0) 推荐(0)