状态压缩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并没有能够买到很好的火车票—— ...
随机推荐
- selenium随笔
1.点击一个连接通常录制一个click命令,通常需要改变它到clickAndWait命令,确保案例暂停,新的页面完全被转载进来. 2.测试案例需要检查Web页的属性,需要assert和verify命令 ...
- postgresql connection failure:SQLSTATE[08006] [7] could not connect to server: Permission denied Is the server running on host "127.0.0.1" and accepting TCP/IP connections on port 5432?
PHP 程序无法连接到 CentOS 上的PostgreSQL,但是在 CentOS 服务器上却能正常运行 psql, 操作如下:多次重启 PG 数据库后发现 CGI 脚本无法连接数据库,但是可以使用 ...
- Halcon11 Linux 下载
Halcon11 Linux下载地址:http://www.211xun.com/download_page_3.html HALCON 11 是一套机器视觉图像处理库,由一千多个算子以及底层的数据管 ...
- 第一个python自动化程序
#Author:xiaoxiao from selenium import webdriver def searchSelenium(): #启动浏览器 driver = webdriver.Fire ...
- java BigDecimal工具类
package com.core.calculate; import java.math.BigDecimal; import java.text.DecimalFormat; /** * Creat ...
- Nodejs项目网页图标的处理
今天,我要说的是Nodejs中,关于网页图标的处理. 在讲解怎么处理之前,我们的了解一下什么是网页图标.网页图标就是我们网页打开之后,标签页的图标,比如下面这个 前面的小人就是我们博客园的网页图标. ...
- response contentType
response.setContentType(MIME)的作用是使客户端浏览器,区分不同种类的数据,并根据不同的MIME调用浏览器内不同的程序嵌入模块来处理相应的数据. 例如web浏览器就是通过MI ...
- URAL1960 Palindromes and Super Abilities
After solving seven problems on Timus Online Judge with a word “palindrome” in the problem name, Mis ...
- .NET返回上一页
原文发布时间为:2010-05-25 -- 来源于本人的百度文章 [由搬家工具导入] if (Request.UrlReferrer != null) { ...
- Repeater控件实现一行显示多条数据 Asp.net
原文发布时间为:2009-05-11 -- 来源于本人的百度文章 [由搬家工具导入] asp.net中Repeater控件可以很方便显示数据库的数据,使用传统的Table来布局,只能实现 ...