状态压缩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并没有能够买到很好的火车票—— ...
随机推荐
- [转]Ubuntu下添加开机启动脚本
作者: 王恒 发表于 2012年 11月 5日 1.方法一,编辑rc.loacl脚本 Ubuntu开机之后会执行/etc/rc.local文件中的脚本, 所以我们可以直接在/etc/rc.local中 ...
- docker常用命令整理
Docker常见用法整理 Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器. Docker 容器通过 Docker 镜像来创建.容器与镜像的关系类似于 ...
- js日期处理
Js获取当前日期时间及其它操作 var myDate = new Date(); myDate.getYear(); //获取当前年份(2位) myDate.getFullYear(); //获取完整 ...
- 在Visual studio 2010中为C#的“///”注释内容生成XML文档 .
实际上该方法适合于所有版本的Visual studio,方法很简单,设置一下Visual studio的项目属性和工具选项即可. 1.在菜单栏的“Project”中选择当前项目的“*** Proper ...
- 序列统计(bzoj 4403)
Description 给定三个正整数N.L和R,统计长度在1到N之间,元素大小都在L到R之间的单调不降序列的数量.输出答案对10^6+3取模的结果. Input 输入第一行包含一个整数T,表示数据组 ...
- 【CF1068B】LCM(数学)
题意:给定b,求lcm(a,b)/a有几种不同的取值 b<=1e10 思路:只有a取b的因子时答案两两不同 #include<cstdio> #include<cstring& ...
- 比较全的.NET页面缓存技术文章
原文发布时间为:2009-11-04 -- 来源于本人的百度文章 [由搬家工具导入] http://www.cnblogs.com/jacksonwj/archive/2009/07/09/15197 ...
- [LeetCode] Reverse Bits 位操作
Reverse bits of a given 32 bits unsigned integer. For example, given input 43261596 (represented in ...
- 《Linux内核Makefile分析》之 auto.conf, auto.conf.cmd, autoconf.h【转】
转自:http://blog.sina.com.cn/s/blog_87c063060101l25y.html 转载:http://blog.csdn.net/lcw_202/article/deta ...
- 知乎上的一些文章---leetcode【笔记1】
张土汪 http://github.com/shawnfan Java{script}代码仔 42 人赞同 [1.19.2017] 更新: 2017年1月17日, 陪我征战多年的 2014 MackB ...