hdu 2209 bfs+状压
http://acm.hdu.edu.cn/showproblem.php?pid=2209
不知为啥有种直觉。会出状压+搜索的题,刷几道先
简单的BFS。状压表示牌的状态,
- //#pragma comment(linker, "/STACK:102400000,102400000")
- #include <cstdio>
- #include <cstring>
- #include <algorithm>
- #include <string>
- #include <iostream>
- #include <iomanip>
- #include <cmath>
- #include <map>
- #include <set>
- #include <queue>
- using namespace std;
- #define ls(rt) rt*2
- #define rs(rt) rt*2+1
- #define ll long long
- #define ull unsigned long long
- #define rep(i,s,e) for(int i=s;i<e;i++)
- #define repe(i,s,e) for(int i=s;i<=e;i++)
- #define CL(a,b) memset(a,b,sizeof(a))
- #define IN(s) freopen(s,"r",stdin)
- #define OUT(s) freopen(s,"w",stdout)
- const ll ll_INF = ((ull)(-1))>>1;
- const double EPS = 1e-8;
- const double pi = acos(-1.0);
- const int INF = 100000000;
- int len,s;
- int vis[1<<21];
- char in[50];
- int legal[25];
- struct Node{
- int s;
- int cnt;
- Node(int ss,int cc):s(ss),cnt(cc){}
- };
- void change()
- {
- s=0;
- len=strlen(in);
- for(int i=0;i<len;i++)
- {
- s<<=1;
- if(in[i] == '1')s+=1;
- }
- }
- int bfs()
- {
- queue<Node>q;
- q.push(Node(s,0));
- CL(vis,0);
- vis[s]=1;
- while(!q.empty())
- {
- Node tp=q.front();q.pop();///
- if(tp.s==0)return tp.cnt;
- int s,cnt=tp.cnt+1;
- for(int i=0;i<len;i++)
- {
- if(i==0)s=tp.s^3;
- else
- {
- if(i==len-1)s=tp.s^(3<<(len-2));//
- else s=(tp.s^(7<<(i-1)));
- }
- if(!vis[s])
- {
- vis[s]=1;
- q.push(Node(s,cnt));
- }
- }
- }
- return -1;
- }
- int main()
- {
- //IN("hdu2209.txt");
- while(~scanf("%s",in))
- {
- change();
- int ans=bfs();
- if(ans==-1)puts("NO");
- else printf("%d\n",bfs());
- }
- return 0;
- }
hdu 2209 bfs+状压的更多相关文章
- hdu 5025 bfs+状压
http://acm.hdu.edu.cn/showproblem.php?pid=5025 N*N矩阵 M个钥匙 K起点,T终点,S点需多花费1点且只需要一次,1-9表示9把钥匙,只有当前有I号钥匙 ...
- hdu 1429 bfs+状压
题意:这次魔王汲取了上次的教训,把Ignatius关在一个n*m的地牢里,并在地牢的某些地方安装了带锁的门,钥匙藏在地牢另外的某些地方.刚开始 Ignatius被关在(sx,sy)的位置,离开地牢的门 ...
- HDU 4771 BFS + 状压
Stealing Harry Potter's Precious Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 ...
- C - 小明系列故事――捉迷藏 HDU - 4528 bfs +状压 旅游-- 最短路+状压
C - 小明系列故事――捉迷藏 HDU - 4528 这个题目看了一下题解,感觉没有很难,应该是可以自己敲出来的,感觉自己好蠢... 这个是一个bfs 用bfs就很好写了,首先可以预处理出大明和二明能 ...
- hdu 1044(bfs+状压)
非常经典的一类题型 没有多个出口.这里题目没有说清楚 Collect More Jewels Time Limit: 2000/1000 MS (Java/Others) Memory Limi ...
- hdu 5094 Maze (BFS+状压)
题意: n*m的迷宫.多多要从(1,1)到达(n,m).每移动一步消耗1秒.有P种钥匙. 有K个门或墙.给出K个信息:x1,y1,x2,y2,gi 含义是(x1,y1)与(x2,y2)之间有gi ...
- hdu 4771 Stealing Harry Potter's Precious (BFS+状压)
题意: n*m的迷宫,有一些格能走("."),有一些格不能走("#").起始点为"@". 有K个物体.(K<=4),每个物体都是放在& ...
- 孤岛营救问题 (BFS+状压)
https://loj.ac/problem/6121 BFS + 状压 写过就好想,注意细节debug #include <bits/stdc++.h> #define read rea ...
- HDU 5025:Saving Tang Monk(BFS + 状压)
http://acm.hdu.edu.cn/showproblem.php?pid=5025 Saving Tang Monk Problem Description <Journey to ...
随机推荐
- Spring框架学习之注解配置与AOP思想
上篇我们介绍了Spring中有关高级依赖关系配置的内容,也可以调用任意方法的返回值作为属性注入的值,它解决了Spring配置文件的动态性不足的缺点.而本篇,我们将介绍Spring的又一大核心 ...
- C# 取Visio模型信息的简易方法
最近的一个项目,要求导出Visio图纸,因为是建筑类的,所以,需要设置墙壁,门,房间等信息的参数. 拿墙壁为例,选中墙壁模型,右键属性,会弹出以下对话框. 需要设置墙长.墙壁厚度等一些列信息. 现在C ...
- 微信小程序异步处理
直接看问题: 然后看打印的结果: 根据上面两图可以看出,代码上先执行的网络请求,再执行打印的变量,但是从下面打印的结果来看,先出结果的是执行打印变量的函数(aafn函数),再打印出网络请求succes ...
- python jason,pickle
参考官网 https://docs.python.org/3/library/json.html https://docs.python.org/3/library/pickle.html 了解这两个 ...
- #UnityTips# 2017.11.14
hi,all.最近比较忙,所以更新也比较慢了. 今天就来和大家分享一个小Tip,它是关于UGUI的坑的. 使用过UGUI的朋友们都知道,Canvas的渲染方式有三种: Screen Space Ove ...
- Python 3.X 调用多线程C模块,并在C模块中回调python函数的示例
由于最近在做一个C++面向Python的API封装项目,因此需要用到C扩展Python的相关知识.在此进行简要的总结. 此篇示例分为三部分.第一部分展示了如何用C在Windows中进行多线程编程:第二 ...
- 谈谈我的移动端rem适配方案
最近有点怀疑人生,毕竟一个人写前端,有时候会怀疑自己理解的一些东西包括用法有没有符合标准.趁着这阵子闲下来,翻了翻别人的rem适配博客,发现有点绕口,怪自己是个强迫症,啥都要自己去试试结果并从中理解, ...
- 阿里云CentOS搭建系统
1.在阿里云网站上购买申请服务器. 2.通过Xshell连接服务器,并用root账户登入. 3.配置java开发环境:(也可以使用阿里云一键部署,自动配置并部署服务器) 一.安装jdk 1.查看Lin ...
- nodejs a和b文件相互引用
//取自于node中文网 http://nodejs.cn/api/modules.html 当循环调用 require() 时,一个模块可能在未完成执行时被返回. 例如以下情况: a.js: con ...
- [转载] Jupiter代码审查工具使用参考
转载自http://blog.csdn.net/jemlee2002/article/details/5715355 一. Jupiter 是什么? 这里的 Jupiter 是一个开源的代 ...