状态压缩DP常遇到的位运算
位操作一共有6种形式:<<,>>,&,|,^,~;
1.左移操作符<<:左移操作符将整数的二进制向左移若干位,将最高若干位挤掉,并在低位补0
如:
int a=; //a=000000000000000000000000000000011=3
int b=a<<; //b=000000000000000000000000000000110=6
int c=a<<; //c=000000000000000000000000000001100=12
实际上:a<<1,a右移1位表示a*2,a<<m表示a*2^m
2.右移操作符>>:右移操作符将整数的二进制向右移若干位,将最低若干位挤掉,并在高位补0或者1
int a =; //a=000000000000000000000000000001010=10
int b = a>>; //b=000000000000000000000000000000101=5
int c = a >> ; //c=000000000000000000000000000000010=2
右移操作符就是不断的做除2^m的运算。
3.位与操作&:位与操作是将两个数的二进制的每一位左与操作:例如:
int a = , b = ;
int c = a&b; //则 c = 2;
//(000000000000000000000000000000110)&(000000000000000000000000000001010)
//=000000000000000000000000000000010
4.位或操作符|:将两个整数二进制的每一位做或操作运算。
int a = , b = ;
int c = a|b; //则 c=14;
//(000000000000000000000000000000110)1(000000000000000000000000000001010)
//=000000000000000000000000000001110
5.位异或操作符^:将两个操作数每一位做异或操作(相同为0,不同为1)
int a = , b = ;
int c = a^b; //则 =12;
//(000000000000000000000000000000110)^(000000000000000000000000000001010)
//=000000000000000000000000000001100
6位反操作~:将操作数的二进制每一位按位取反,0变为1,1变为0.
int a = ;
int b = ~a; //b=-7
//b=~(000000000000000000000000000000110)=11111111111111111111111111111001
位操作相对乘法快很多,将所有对2的乘法运算转换为位移运算,可提高程序的运行效率。在C/C++中还有一类复合的位运算符:&=、!=、>>=、<<=和^=
其实a&=b;等价于a=a&b;依次类推。
状态压缩DP常遇到的位运算的更多相关文章
- POJ 3254 Corn Fields(状态压缩DP)
Corn Fields Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 4739 Accepted: 2506 Descr ...
- DP大作战—状态压缩dp
题目描述 阿姆斯特朗回旋加速式阿姆斯特朗炮是一种非常厉害的武器,这种武器可以毁灭自身同行同列两个单位范围内的所有其他单位(其实就是十字型),听起来比红警里面的法国巨炮可是厉害多了.现在,零崎要在地图上 ...
- BZOJ-1226 学校食堂Dining 状态压缩DP
1226: [SDOI2009]学校食堂Dining Time Limit: 10 Sec Memory Limit: 259 MB Submit: 588 Solved: 360 [Submit][ ...
- POJ 3691 (AC自动机+状态压缩DP)
题目链接: http://poj.org/problem?id=3691 题目大意:给定N个致病DNA片段以及一个最终DNA片段.问最终DNA片段最少修改多少个字符,使得不包含任一致病DNA. 解题 ...
- POJ 3311 Hie with the Pie(Floyd+状态压缩DP)
题是看了这位的博客之后理解的,只不过我是又加了点简单的注释. 链接:http://blog.csdn.net/chinaczy/article/details/5890768 我还加了一些注释代码,对 ...
- POJ 1185 (状态压缩DP)
中文题目,题意就不说了. 不得不说这是一道十分经典的状态压缩DP的题目. 思路: 通过分析可以发现,第i行的格子能不能放大炮仅与第i-1和i-2行的放法有关,而与前面的放法无关,因此,如果我们知道了i ...
- poj 3311 Hie with the Pie(状态压缩dp)
Description The Pizazz Pizzeria prides itself or more (up to ) orders to be processed before he star ...
- Travelling(spfa+状态压缩dp)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=3001 Travelling Time Limit: 6000/3000 MS (Java/Others ...
- 状态压缩·一(状态压缩DP)
描述 小Hi和小Ho在兑换到了喜欢的奖品之后,便继续起了他们的美国之行,思来想去,他们决定乘坐火车前往下一座城市——那座城市即将举行美食节! 但是不幸的是,小Hi和小Ho并没有能够买到很好的火车票—— ...
随机推荐
- day02_02.能被3整除的个位数为6的数
第2题 能被3整除的个位数为6的数 难度增加一点点,再接再厉 注意: 把一些限制条件,用PHP编程的语言来执行 题目:输出100以内(不含100)能被3整除且个位数为6的所有整数 <?php f ...
- Python数据分析基础——读写CSV文件
1.基础python代码: #!/usr/bin/env python3 # 可以使脚本在不同的操作系统之间具有可移植性 import sys # 导入python的内置sys模块,使得在命令行中向脚 ...
- 关于eclipse连接mysql jar包
步骤如下: 右键工程--选择build path -- add Libraries. 弹出框选user library,点击next. 弹出框点击add libraries . 继续点击new ,输 ...
- Selenium - WebDriver Advanced Usage
Explicit Waits # Python from selenium import webdriver from selenium.webdriver.common.by import By f ...
- socket传输对象
server public class Server{ private static int port = 8888; private static ServerSocket serverSocket ...
- hdu5834 Magic boy Bi Luo with his excited tree 【树形dp】
题目链接 hdu5834 题解 思路很粗犷,实现很难受 设\(f[i][0|1]\)表示向子树走回来或不回来的最大收益 设\(g[i][0|1]\)表示向父亲走走回来或不回来的最大收益 再设\(h[i ...
- DFA Minimization
有点晚了我就不调试了..不过说是这么说我还是过了编译的.. #include<bits/stdc++.h> using namespace std; namespace DFA{ cons ...
- java递归处理文件夹和文件
import java.io.File; /** * 文件综合使用示例 */ public class FileDelete { public static void main(String[] ar ...
- flake8(代码规范利器)
flake8(代码规范利器) 概述 flake8是下面三个工具的封装: 1)PyFlakes 2)Pep8 3)NedBatchelder’s McCabe script Flake8的下载地址:ht ...
- 上传图片获取base64位编码
function loadImg(){ //获取文件 ].files[]; //创建读取文件的对象 var reader = new FileReader(); //创建文件读取相关的变量 var i ...