//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随便切...的更多相关文章

  1. POJ 3126 Prime Path BFS搜索

    题意:就是找最短的四位数素数路径 分析:然后BFS随便搜一下,复杂度最多是所有的四位素数的个数 #include<cstdio> #include<algorithm> #in ...

  2. POJ 3271 BFS (大坑)

    被某人拉进了坑 完完全全被坑一天的题-- 题意: 正解思路: 先把每一个点搜一遍 预处理出它能在一步之内到的所有点 并连边 然后用一个类似DP的东西把方案数加起来就搞定了 (其实 也不是很难) 但是 ...

  3. LOJ 一本通一句话题解系列:

    第一部分 基础算法 第 1 章 贪心算法 1):「一本通 1.1 例 1」活动安排:按照结束时间排序,然后扫一遍就可以了. 2):「一本通 1.1 例 2」种树:首先要尽量的往区间重叠的部分种树,先按 ...

  4. luogu P3305 [SDOI2013]费用流

    题目链接 bz似乎挂了... luogu P3305 [SDOI2013]费用流 题解 dalao告诉我,这题 似乎很水.... 懂了题目大意就可以随便切了 问1,最大流 问2,二分最大边权求,che ...

  5. OI总结

    当下考的钟声叮当响起,该走了,一年半的OI竞赛就此结束 留下了很多遗憾.也拥有过一段美好的竞赛生活 结识了一群优秀的OI战友,一起进步一起开心一起忧愁,但这一切的一切都将在今晚变成过去式,CSp的好与 ...

  6. ASP.NET MVC使用SSI来实现页面静态化

    页面静态化分为两种:伪静态和真静态,这里主要介绍的是真静态. 进入正题之前先简单介绍一下SSI和shtml: 1).SSI是Server Side Include的简称(服务器端嵌入) 2).shtm ...

  7. 【BZOJ】【1024】【SCOI2009】生日快乐

    枚举 想到以后一秒钟变水题…… 一开始我想:这不是可以随便切吗……但是突然想到:第一刀,必须切在n等分点上!因为要求最后每块的大小相等,那么同理,比如总共要切成7块,第一刀切成了$\frac{3}{7 ...

  8. HDU4612 Warm up 边双连通分量&&桥&&树直径

    题目的意思很简单,给你一个已经连通的无向图,我们知道,图上不同的边连通分量之间有一定数量的桥,题目要求的就是要你再在这个图上加一条边,使得图的桥数目减到最少. 首先要做的就是找出桥,以及每个点所各自代 ...

  9. BZOJ_1024_[SHOI2008]_生日快乐_(dfs)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1024 给出一个\(x*y\)的距形,要求平行于边切,最终切成\(n\)个面积相等的小距形,求长 ...

随机推荐

  1. java栈、堆

    一.栈.堆 几个小概念 1.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制. 2. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的 ...

  2. 【转载】C#中的泛型

    1.1 C#中的泛型 .Net 1.1版本最受诟病的一个缺陷就是没有提供对泛型的支持.通过使用泛型,我们可以极大地提高代码的重用度,同时还可以获得强类型的支持,避免了隐式的装箱.拆箱,在一定程度上提升 ...

  3. 将MySQL服务绑定到固定的IP地址上

    近期将在线服务迁移到了阿里云.     阿里云提供了云盾,安全上确实比其他的云服务有了很大的提高,遗憾的是,没有防火墙,还是需要自己设置.阿里云的虚拟机跑在XEN上,直接使用YUM安装iptables ...

  4. Android_Service详解及实例

    转自:http://blog.csdn.net/guolin_blog/article/details/11952435    http://blog.csdn.net/guolin_blog/art ...

  5. 键盘HOOK显示按键信息

    GetKeyNameText(MapVirtualKey(iKeyValue,0)<<16));//iKeyValue 的值为 VK_ESCAPE 等 LRESULT CALLBACK L ...

  6. Gym - 101164C - Castle KMP

    题目链接:传送门 题解: 利用KMP的fail失配数组,快速找到当前后缀与前缀的公共前缀点 #include<bits/stdc++.h> using namespace std; #pr ...

  7. Unity3D集成腾讯语音GVoice SDK

    友情提示:最近发现腾讯GVoice有另一个官网,叫做腾讯游戏服务,经过对比发现这个网站才是最新的,下面我介绍的那个估计是已经废弃的,但不知道为啥老的网站没有直接链接到新网址而是仍然保留了.不过新官网的 ...

  8. redis---01

    redis是什么: redis是开源,BSD许可,高级的key-value存储系统. 可以用来存储字符串,哈希结构,链表,集合,因此,常用来提供数据结构服务. redis和memcached相比,的独 ...

  9. 取clientdataset detal中的 更新数据, 将detal 转 数据库脚本sql

    转自永南博客,更改update 脚本只取变化字段,更改排除blob与数组字段,这两个类型会报错 function vartosql(value: Variant): wideString; var  ...

  10. POJ3414 Pots —— BFS + 模拟

    题目链接:http://poj.org/problem?id=3414 Pots Time Limit: 1000MS   Memory Limit: 65536K Total Submissions ...