[BZOJ 1054][HAOI 2008]移动玩具 状态压缩
考试的时候一看是河南省选题,觉得会很难,有点不敢想正解。感觉是个状压。但是一看是十年前的题,那怂什么!
直接把十六个数的状态压进去,因为个数是不变的,所以状态枚举的时候只要找数目一样的转移即可。而且只需找这一位为1的转移即可。因为个数不变,所以转移0到1和转移1到0是一样的。
就是简单的模拟转移,找它的上下左右对应的那一位是否为0,如果是,那么就是从此为是0,那一位是1转移过来的,取个min即可。
因为枚举是暴力枚举,而不是按状态顺序枚举,所以可能在一次枚举的时候有的状态没有转移到,那就重复处理此过程,直到都转移到即可。
比较暴力。能过就行。hhh。
#include<iostream> #include<cstdio> #include<cstring> using namespace std; #define pos(i,a,b) for(int i=(a);i<=(b);i++) #define pos2(i,a,b) for(int i=(a);i>=(b);i--) int f[1<<16]; int count(int x) { int sum=0; while(x) { if(x&1) sum++; x>>=1; } return sum; } int tmp,cnt,ans; int flag[20]; int main() { freopen("movea.in","r",stdin); freopen("movea.out","w",stdout); memset(f,0x7f,sizeof(f)); //cout<<(7^2)<<endl; pos(i,1,16) { char x; cin>>x; int xx=x-'0'; if(xx==1) { tmp|=(1<<((17-i)-1)); flag[i]=1; } } pos(i,1,16) { char x; cin>>x; int xx=x-'0'; if(xx==1) ans|=(1<<((17-i)-1)); } cnt=count(tmp); f[tmp]=0; while(f[ans]>10000000) { pos(i,0,(1<<16)-1) { if(count(i)==cnt) { pos(j,1,16) { int qian=(1<<((17-j)-1)); if(qian&i) { if(((j%4)!=1)&&((1<<((18-j)-1))&i)==0) { int temp; temp=(1<<((18-j)-1))|i; temp^=qian; f[i]=min(f[i],f[temp]+1); } if((j%4)&&((1<<((16-j)-1))&i)==0) { int temp; temp=(1<<((16-j)-1))|i; temp^=qian; f[i]=min(f[i],f[temp]+1); } if(j<=12&&((1<<((13-j)-1))&i)==0) { int temp; temp=(1<<((13-j)-1))|i; temp^=qian; f[i]=min(f[i],f[temp]+1); } if(j>=5&&(((1<<(21-j)-1))&i)==0) { int temp; temp=(1<<((21-j)-1))|i; temp^=qian; f[i]=min(f[i],f[temp]+1); } } } } } } cout<<f[ans]; //while(1); return 0; }
[BZOJ 1054][HAOI 2008]移动玩具 状态压缩的更多相关文章
- 【BZOJ 1054】 [HAOI2008]移动玩具
Description 在一个4*4的方框内摆放了若干个相同的玩具,某人想将这些玩具重新摆放成为他心中理想的状态,规定移动时只能将玩具向上下左右四个方向移动,并且移动的位置不能有玩具,请你用最少的移动 ...
- bzoj 1087 [SCOI2005]互不侵犯King 状态压缩dp
1087: [SCOI2005]互不侵犯King Time Limit: 10 Sec Memory Limit: 162 MB[Submit][Status][Discuss] Descripti ...
- BZOJ 1097: [POI2007]旅游景点atr 状态压缩+Dijkstra
题解: $k<=20,$ 考虑状压dp. 从 $1$ 号点走到 $n$ 号点经过的点的个数可能会非常多,但是强制要求经过的点一共才 $20$ 个. 而我们发现这个题好就好在可以经过某个城市,而不 ...
- [HAOI 2005][BZOJ 1054] 移动玩具
先贴一波题面 1054: [HAOI2008]移动玩具 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2288 Solved: 1270 Descr ...
- bzoj 1054: [HAOI2008]移动玩具 bfs
1054: [HAOI2008]移动玩具 Time Limit: 10 Sec Memory Limit: 162 MB[Submit][Status][Discuss] Description 在 ...
- bzoj 1054 移动玩具
题目连接 http://www.lydsy.com/JudgeOnline/problem.php?id=1054 移动玩具 Description 在一个4*4的方框内摆放了若干个相同的玩具,某人想 ...
- BZOJ 1054 [HAOI2008]移动玩具
1054: [HAOI2008]移动玩具 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1388 Solved: 764[Submit][Statu ...
- [BZOJ 4455] [ZJOI 2016] 小星星 (树形dp+容斥原理+状态压缩)
[BZOJ 4455] [ZJOI 2016] 小星星 (树形dp+容斥原理+状态压缩) 题面 给出一棵树和一个图,点数均为n,问有多少种方法把树的节点标号,使得对于树上的任意两个节点u,v,若树上u ...
- BZOJ 1087状态压缩DP
状态压缩DP真心不会写,参考了别人的写法. 先预处理出合理状态, 我们用二进制表示可以放棋子的状态,DP[I][J][K]:表示现在处理到第I行,J:表示第I行的状态,K表示现在为止一共放的棋子数量. ...
随机推荐
- javascript之ProtoBuf在websocket中的使用
因为ProtoBuf的序列化效率和大小都非常好,所以它在网络通信上面应用越来越多:而webosocket也随着web3.0应用越来越广泛,而将这两个结合在一起的也会慢慢形成一种趋势:本人是为了测试自已 ...
- [leetcode-565-Array Nesting]
A zero-indexed array A consisting of N different integers is given. The array contains all integers ...
- Failed to sync Gradle project 'XX'错误解决
错误代码 Failed to sync Gradle project 'WeChat' Error:Failed to find target with hash string 'android-24 ...
- webpack以及loader 加载命令
module.exports={ entry:'./main/main.js', output:{ path:'./build', filename:'bundle.js' }, module:{ l ...
- spring +springmvc+mybatis组合applicationContext.xml文件配置
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.spr ...
- TCP 连接重置漏洞 - CVE-2004-0230讲解
TCP 连接重置漏洞 - CVE-2004-0230: IPv6 实施中存在一个拒绝服务漏洞,该漏洞可能允许攻击者向受影响系统发送特制的 TCP 消息. 成功利用此漏洞的攻击者可能会导致受影响系统重置 ...
- 面向对象15.3String类-常见功能-获取-1
API使用: 查API文档的时候,有很多方法,首先先看返回的类型 下面的方法函数有的是有覆写Object类的如1.1图,如果没有复写的话是写在1.2图片那里的,如果找到了相对于的方法,可以点击进去可以 ...
- 面向对象设计模式——观察者(OBSERVER)模式
定义 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新. Observer模式描述了如何建立这种关系.这一模式中的关键对象是目标(subject ...
- 某天U盘插在笔记本打不开了,是U盘坏了还是电脑的问题?
五六月份忙着毕业设计与毕业论文,U盘在这个时候就是大功臣啦! 然而打印完最终版本论文上交后,再次把U盘插在自己的笔记本上读取失败了... 只有一个空白的图标,打不开,也无法格式化. 试着删除,拔了又插 ...
- 为什么不需要为Python对象添加 getter 和 setter
Getter 和 setter在java中被广泛使用.一个好的java编程准则为:将所有属性设置为私有的,同时为属性写getter和setter函数以供外部使用. 这样做的好处是属性的具体实现被隐藏, ...