poj3185//BFS随便切...
//poj 3185
2 //利用bit,通过位运算切换状态 ,然后BFS一下,轻易水过。
3 //说完好像很简单。。。是的,简单是简单,弱第一次以这种位运算姿势过题,太劲。膜思路 ORZ...
4
5 #include<iostream>
6 #include<string.h>
7 #include<set>
8 #include<queue>
9 #include<sstream>
10 using namespace std;
11
12 bool vis[1<<21];
13 int step[1<<21];
14 int q[100000000];
15 int head,tail;
16
17 int BFS(int x)
18 {
19 memset(vis,0,sizeof(vis));
20 vis[x]=1;
21 head=0;tail=1;
22 q[head]=x;
23 step[x]=0;
24 while(head<tail)
25 {
26 int u=q[head];head++;
27 if(u==0)
28 return step[u];
29 for(int i=1;i<19;i++)
30 {
31 int r=u;
32 r^=(1<<i-1)|(1<<i)|(1<<i+1);
33 if(!vis[r])
34 {
35 vis[r]=1;
36 step[r]=step[u]+1;
37 if(r==0) return step[r];
38 q[tail++]=r;
39 }
40 }
41 int r;
42 r=u^(1<<0)^(1<<1);
43 if(!vis[r])
44 {
45 vis[r]=1;
46 step[r]=step[u]+1;
47 if(r==0) return step[r];
48 q[tail++]=r;
49 }
50 r=u^(1<<18)^(1<<19);
51 if(!vis[r])
52 {
53 vis[r]=1;
54 step[r]=step[u]+1;
55 if(r==0) return step[r];
56 q[tail++]=r;
57 }
58 }
59 return -1;
60
61 }
62
63 int main()
64 {
65 int ans=0;
66 int x;
67 for(int i=0;i<20;i++)
68 {
69 scanf("%d",&x);
70 ans|=(x<<i);
71 }
72 printf("%d\n",BFS(ans));
73 return 0;
74 }
poj3185//BFS随便切...的更多相关文章
- POJ 3126 Prime Path BFS搜索
题意:就是找最短的四位数素数路径 分析:然后BFS随便搜一下,复杂度最多是所有的四位素数的个数 #include<cstdio> #include<algorithm> #in ...
- POJ 3271 BFS (大坑)
被某人拉进了坑 完完全全被坑一天的题-- 题意: 正解思路: 先把每一个点搜一遍 预处理出它能在一步之内到的所有点 并连边 然后用一个类似DP的东西把方案数加起来就搞定了 (其实 也不是很难) 但是 ...
- LOJ 一本通一句话题解系列:
第一部分 基础算法 第 1 章 贪心算法 1):「一本通 1.1 例 1」活动安排:按照结束时间排序,然后扫一遍就可以了. 2):「一本通 1.1 例 2」种树:首先要尽量的往区间重叠的部分种树,先按 ...
- luogu P3305 [SDOI2013]费用流
题目链接 bz似乎挂了... luogu P3305 [SDOI2013]费用流 题解 dalao告诉我,这题 似乎很水.... 懂了题目大意就可以随便切了 问1,最大流 问2,二分最大边权求,che ...
- OI总结
当下考的钟声叮当响起,该走了,一年半的OI竞赛就此结束 留下了很多遗憾.也拥有过一段美好的竞赛生活 结识了一群优秀的OI战友,一起进步一起开心一起忧愁,但这一切的一切都将在今晚变成过去式,CSp的好与 ...
- ASP.NET MVC使用SSI来实现页面静态化
页面静态化分为两种:伪静态和真静态,这里主要介绍的是真静态. 进入正题之前先简单介绍一下SSI和shtml: 1).SSI是Server Side Include的简称(服务器端嵌入) 2).shtm ...
- 【BZOJ】【1024】【SCOI2009】生日快乐
枚举 想到以后一秒钟变水题…… 一开始我想:这不是可以随便切吗……但是突然想到:第一刀,必须切在n等分点上!因为要求最后每块的大小相等,那么同理,比如总共要切成7块,第一刀切成了$\frac{3}{7 ...
- HDU4612 Warm up 边双连通分量&&桥&&树直径
题目的意思很简单,给你一个已经连通的无向图,我们知道,图上不同的边连通分量之间有一定数量的桥,题目要求的就是要你再在这个图上加一条边,使得图的桥数目减到最少. 首先要做的就是找出桥,以及每个点所各自代 ...
- BZOJ_1024_[SHOI2008]_生日快乐_(dfs)
描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1024 给出一个\(x*y\)的距形,要求平行于边切,最终切成\(n\)个面积相等的小距形,求长 ...
随机推荐
- Codeforces 424 C. Magic Formulas
xor是满足交换律的,展开后发现仅仅要能高速求出 [1mod1....1modn],....,[nmod1...nmodn]的矩阵的xor即可了....然后找个规律 C. Magic Formulas ...
- 如何干掉那些.ipch 与 .sdf文件
参考资料: http://blog.163.com/yangjun1988422@126/blog/static/47412917201074446054/ vs2010中臃肿的ipch和sd ...
- HDU 1028 Ignatius and the Princess III (母函数或者dp,找规律,)
Ignatius and the Princess III Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K ...
- iOS Webview 与 app交互
有时候我们在内嵌的webview中希望点击一个链接之后,触发iOS原生事件,而不是webview内页面跳转(因为webview的跳转很生硬,而ajax+js模拟则不如原生segue平滑). 有时候我们 ...
- HDU2489 Minimal Ratio Tree 【DFS】+【最小生成树Prim】
Minimal Ratio Tree Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
- 在VC中动态加载ODBC的方法
在使用VC.VB.Delphi等高级语言编写数据库应用程序时,往往需要用户自己在控制面板中配置ODBC数据源.对于一般用户而言,配置ODBC数据源可能是一件比较困难的工作.而且,在实际应用中,用户往往 ...
- ArchLinux最小化安装 必备库 常用命令
铸成强大的工作站环境——ArchLinux最小化安装 所有问题归结起来,只是一个问题:ArchLinux最小化安装,需要安装哪些包? 1.bash//最基本的Bash Shell(必须)2.bzip2 ...
- eclipse 添加库
Window ->Preferences ->Java ->Build Path ->User Libraries New,起个名字,如myLibrary add jars,添 ...
- Windows ping源码
需要测试外网的联通性,想到了用ping.网上下载了ping的源代码,调试下整理如下: /******************************************************** ...
- spring 相关博客
Spring中使用Interceptor拦截器 spirng4 中文文档 ssm整合 Spring系列之Spring常用注解总结 Spring框架中context-param与servlet中in ...