[bzoj1054][HAOI2008]移动玩具
题意:在一个4*4的方框内摆放了若干个相同的玩具,某人想将这些玩具重新摆放成为他心中理想的状态,规定移动
#include<iostream> #include<cstdio> using namespace std; inline int read() {int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-') f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=x*10+ch-'0'; ch=getchar();}return x*f; } const int dis[4][2]={{1,0},{-1,0},{0,-1},{0,1}}; const int p[4][4]={{1,2,4,8},{16,32,64,128},{256,512,1024,2048},{4096,8192,16384,32768}}; char s[4][4],s2[4][4]; int d[65537],to=0,beg=0; int q[600005],top=0,tail=0;inline bool check(int x,int a,int b){return ((x&a)>0)==((x&b)>0);}void solve(int num,int x,int y) {int xx,yy,ans=d[num]+1;for(int i=0;i<4;i++){xx=x+dis[i][0];yy=y+dis[i][1];if(xx<0||yy<0||xx>=4||yy>=4||check(num,p[x][y],p[xx][yy]))continue;int t=num^p[x][y]^p[xx][yy];if(d[t]>ans){d[t]=ans;q[++top]=t;}} }int main() {for(int i=0;i<4;i++)scanf("%s",s[i]);for(int i=0;i<4;i++)scanf("%s",s2[i]);for(int i=0;i<4;i++)for(int j=0;j<4;j++)if(s2[i][j]=='1')to+=p[i][j];for(int i=0;i<4;i++)for(int j=0;j<4;j++)if(s[i][j]=='1')beg+=p[i][j];for(int i=0;i<65536;i++) d[i]=20000000;d[beg]=0;q[++top]=beg;while(top!=tail){int u=q[++tail];for(int i=0;i<4;i++)for(int j=0;j<4;j++)solve(u,i,j);}cout<<d[to];return 0; }
转载于:https://www.cnblogs.com/FallDream/p/bzoj1054.html
[bzoj1054][HAOI2008]移动玩具相关推荐
- bzoj 1054: [HAOI2008]移动玩具.cpp
1054: [HAOI2008]移动玩具 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 2260 Solved: 1254 [Submit][St ...
- [HAOI2008]移动玩具
这又是一道神奇的搜索题...只要记录每种状态...然后暴力判断这种状态往后一步的情况... 广搜出最优解即可... 呆码: #include<iostream> #include<c ...
- BZOJ 1054: [HAOI2008]移动玩具(bfs)
题面: https://www.lydsy.com/JudgeOnline/problem.php?id=1054 题解: 将每一种状态十六位压成二进制,然后bfs..不解释.. p.s.注意特判初始 ...
- 提高篇 第一部分 基础算法 第4章 广搜的优化技巧
LOJ 一本通一句话题解系列: - ~victorique~ - 博客园 LOJ 一本通一句话题解系列: - ~victorique~ - 博客园 「一本通 1.4 例 1」电路维修 电路维修 (广搜 ...
- 2019.3.summary
emmmm,把以前写的2b总结丢上来吧,不过应该也不会有人看QAQ (注:因为用txt写的,有一些公式打的很随意,放到markdown上公式自动排版,有可能会显示出错误!可在下方留言) 2019.2. ...
- BZOJ第一页刷题计划
BZOJ第一页刷题计划 已完成:67 / 90 [BZOJ1000]A+B Problem:A+B: [BZOJ1001][BeiJing2006]狼抓兔子:最小割: [BZOJ1002][FJOI2 ...
- python中关键字参数含义_python中接受任意关键字的参数
1.*args args是非关键字参数,可以理解为形参,为了方便记忆我理解它是arguments的缩写. 2.*kwargs kwargs是键值对参数,为了方便记忆我理解它是key word argu ...
- 语法入门*算法入门题单
作者:王清楚 链接:https://ac.nowcoder.com/discuss/817596?type=101&order=0&pos=1&page=4&chann ...
- 【新手上路】语法入门算法入门题单
作者:王清楚 链接:[新手上路]语法入门&算法入门题单_ACM竞赛_ACM/CSP/ICPC/CCPC/比赛经验/题解/资讯_牛客竞赛OJ_牛客网 来源:牛客网 介绍:本题单分为语法入门和算法 ...
最新文章
- 一元二次方程实根java_请依次输入一元二次方程的三个系数,并点击计算显示实根...
- 本周Github项目精选:高效CNN推理库、多款AlphaGo实现
- 多个线程作用于同一个runnable对象
- sublime unable to save 没有那个文件或者目录
- xms跨平台基础框架 - 基于.netcore
- python set |_Python事件类| set()方法与示例
- Quartz2D知识点聚合案例
- 思维 || Make It Equal
- 1、数列求值 - 2019年第十届蓝桥杯大赛软件类省赛
- indesign里怎么打根号_三相电是如何产生的?怎么接线?
- Springboot
- POWERBUILDER -- PB通过URL下载局域网或者互联网上的图片或者文件
- 云计算与大数据” 研讨会:迎来新的科学价值
- sis最新ip地址2020入口一_2020最新大厂内部 PHP 高级工程师面试题汇总(一)
- 清华大学计算机系2016名单,清华大学2016年自主招生北京考生入选名单汇总
- 新浪微博正在审核的开发者平台应用添加测试账号
- 连连跨境支付独立站收款,最高90天提现0费率!
- 实习总结与收获(2021.6.7-2021.8.27)
- bootloader学习笔记---第一篇以stm32为例
- Simulink自动代码生成:如何标准化的建模?以MAB,MISRA C 2012建模规范为例
热门文章
- 理解面向过程和面向对象的程序设计方法
- USCACO Buy Low, Buy Lower
- java 头尾 队列_超详细的java集合讲解
- mysql sql语句编码_SQL语句实用例子 MySQL编码设置
- springboot 打包_springboot项目打包上传至阿里云服务器
- 稍等片刻 正在提取文件_三亚种子罐市场价,中药提取浓缩设备的价格
- 深蓝学院第二章:基于全连接神经网络(FCNN)的手写数字识别
- keras 的 example 文件 imdb_bidirectional_lstm.py 解析
- 4.1 ucGUI 图片显示方法
- 【Pandas库】(6) 索引操作--改、查、高级索引