
位运算
South__wind
ACMER
展开
-
poj 1185 炮兵阵地
一道很经典的状态压缩DP,首先DFS出所有的可能状态,M<=10 ,总状态最大为60.dp[i][j][k] 表示前i行,第i-1行状态为num[j], 第i行状态为num[k]的最优解。然后枚举3行的状态,时间复杂度为100*60^3,进行状态转移即可。注意有些格子不能放炮兵,所以用一个mach数组记录每一行的状态 进行&运算结果为0说明不能放的格子上面没有放炮兵然后每次的最优解原创 2012-08-30 15:30:21 · 286 阅读 · 0 评论 -
poj 2309,poj 2453 ,3748
练习了一下位运算。poj 2309#includeint n,t;int main(){ scanf("%d",&t); while(t--) { scanf("%d",&n); printf("%d %d\n",n-(n&-n)+1,n+(n&-n)-1); }}poj 2453#in原创 2012-08-30 15:22:36 · 339 阅读 · 0 评论 -
位运算的应用
要点 1 它们都是双目运算符,两个运算分量都是整形,结果也是整形。 2 " 3 ">>"右移:右边的位被挤掉。对于左边移出的空位,如果是正数则空位补0,若为负数,可能补0或补1,这取决于所用的计算机系统。 4 ">>>"运算符,右边的位被挤掉,对于左边移出的空位一概补上0。位运算符的应用 (源操作数s 掩码mask)(1) 按位与-- &1 清零特定位 (mask中特原创 2012-08-31 16:29:15 · 362 阅读 · 0 评论 -
hdu 1429 胜利大逃亡(续)
广搜+位运算:在这里我们建立一个2进制钥匙串,如果对应位有钥匙则该位为1,反之为0,每当遇见钥匙,我们就把这把这把钥匙加到钥匙串的对应位置,广搜压栈的时候需要判断该位置是否为门的位置,并且检查是否有相应的钥匙,并且每个点对应一个钥匙串的状态,建立三维数组,前两位表示保存点的位置,后一位表示相应位置对应的钥匙的状态,进行一遍bfs即可。#includeint m,n,t;原创 2012-09-02 01:08:48 · 733 阅读 · 0 评论