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\)个面积相等的小距形,求长 ...
随机推荐
- java栈、堆
一.栈.堆 几个小概念 1.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制. 2. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的 ...
- 【转载】C#中的泛型
1.1 C#中的泛型 .Net 1.1版本最受诟病的一个缺陷就是没有提供对泛型的支持.通过使用泛型,我们可以极大地提高代码的重用度,同时还可以获得强类型的支持,避免了隐式的装箱.拆箱,在一定程度上提升 ...
- 将MySQL服务绑定到固定的IP地址上
近期将在线服务迁移到了阿里云. 阿里云提供了云盾,安全上确实比其他的云服务有了很大的提高,遗憾的是,没有防火墙,还是需要自己设置.阿里云的虚拟机跑在XEN上,直接使用YUM安装iptables ...
- Android_Service详解及实例
转自:http://blog.csdn.net/guolin_blog/article/details/11952435 http://blog.csdn.net/guolin_blog/art ...
- 键盘HOOK显示按键信息
GetKeyNameText(MapVirtualKey(iKeyValue,0)<<16));//iKeyValue 的值为 VK_ESCAPE 等 LRESULT CALLBACK L ...
- Gym - 101164C - Castle KMP
题目链接:传送门 题解: 利用KMP的fail失配数组,快速找到当前后缀与前缀的公共前缀点 #include<bits/stdc++.h> using namespace std; #pr ...
- Unity3D集成腾讯语音GVoice SDK
友情提示:最近发现腾讯GVoice有另一个官网,叫做腾讯游戏服务,经过对比发现这个网站才是最新的,下面我介绍的那个估计是已经废弃的,但不知道为啥老的网站没有直接链接到新网址而是仍然保留了.不过新官网的 ...
- redis---01
redis是什么: redis是开源,BSD许可,高级的key-value存储系统. 可以用来存储字符串,哈希结构,链表,集合,因此,常用来提供数据结构服务. redis和memcached相比,的独 ...
- 取clientdataset detal中的 更新数据, 将detal 转 数据库脚本sql
转自永南博客,更改update 脚本只取变化字段,更改排除blob与数组字段,这两个类型会报错 function vartosql(value: Variant): wideString; var ...
- POJ3414 Pots —— BFS + 模拟
题目链接:http://poj.org/problem?id=3414 Pots Time Limit: 1000MS Memory Limit: 65536K Total Submissions ...