ZOJ - 4020 Traffic Light (BFS)】的更多相关文章

[传送门]http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4020 [题目大意]从起点(sx, sy)出发,要到达(ex , ey).每次从点(x,y)走的时候要看红绿灯,灯的状态为1时只能左右走,走到(x , y+1)或者 (x , y-1):灯为0的时候只能上下走,走到(x +1, y)或者 (x-1 , y).现在问能不能从源点走到终点,如果能,输出最少需要走多少步. 注意(x,y)代表第x行第y列,不是传统意义上的…
题目链接 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4020 题意 给出一张地图 以及起点和终点 求是否能从起点走到终点 如果能 求出最小步数 如果不能 输出 -1 然后地图上的0表示在这个点 只能 上下走,,1 只能 左右走 没走一步 地图上 每个1 都变成 0 每个0 都变成 1 思路 那么地图变化 可以用 步数 % 2 来求得 如果 步数 % 2 是 1 那么此时 1 就是 0 0 就是 1 如果 步数 % 2…
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4020 很简单的一个bfs题,是我想多了. 顺便学习一下C++的STL中的vector的用法:https://www.cnblogs.com/youpeng/p/10779019.html #include <cstdio> #include <vector> #include <queue> using namespace std; c…
题目链接:The 18th Zhejiang University Programming Contest Sponsored by TuSimple - G Traffic Light 题解: 题意自己翻译,此题首先肯定是要广搜的,不过要开一个1e5*1e5的数组好像有点困难, 所以用结构体来存每个点的下标,然后从源点开始广搜.定义一个pair<node,int>,第一个存节点信息,第二个存到当前节点的步数,因为还要处理到达每个节点的状态. 状态:走奇数步并且状态为1与走偶数步状态为0的结果…
题意:每个点有两种状态,0/1,0表示只能上下方向走,1表示只能左右方向走.每走一步整个图的状态改变一次(即0->1,1->0). 数据范围:n,m<=1e15 开始迷之因为数组太大编译不过(但是有的人过了就不是很懂orz).强制状态压缩,将map用vector存储.然后对于每个点奇数次访问用2标记,偶数次访问用4标记. 利用int是8字节的特点,最后一位记录map,前面两位记录访问状态. 若奇数次访问过后,map[i][j] |= 2:若偶数次访问过后,map[i][j] |= 4.…
Wumpus Time Limit: 2 Seconds      Memory Limit: 65536 KB One day Leon finds a very classic game called Wumpus.The game is as follow. Once an agent fell into a cave. The legend said that in this cave lived a kind of monster called Wumpus, and there we…
Jugs In the movie "Die Hard 3", Bruce Willis and Samuel L. Jackson were confronted with the following puzzle. They were given a 3-gallon jug and a 5-gallon jug and were asked to fill the 5-gallon jug with exactly 4 gallons. This problem generali…
题目链接 分析: 一个n * n的图,每个点是一个奶酪的体积,从0,0开始每次最多可以走k步,下一步体积必须大于上一步,求最大体积和 #include <iostream> #include <cstdio> #include <queue> #include <cstring> #include <algorithm> using namespace std; + ; const int INF = 0x3f3f3f3f; int g[Max]…
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4842 要注意题目中两点: 1.在踏入妖怪控制的区域那一刹那,先减行动力,然后才能杀妖怪 2.在妖怪控制区域行动力也会恢复 3.妖怪也许不在自己的控制区域 #include <cstdio> #include <cstring> #include <algorithm> #include <queue> using namespace st…
一道比较不错的BFS+DP题目 题意很简单,就是问一个刚好包含m(m<=10)个不同数字的n的最小倍数. 很明显如果直接枚举每一位是什么这样的话显然复杂度是没有上限的,所以需要找到一个状态表示方法: 令F[i][j] 表示已经用了 i (二进制压位表示)用了 i 这些数字,且余数j为的状态,枚举时直接枚举当前位,那么答案明显就是F[m][0] 我这里将状态i, j存在了一维空间里,即 i * 1000 + j表示,实际上用一个结构体存队列里的点,用二维数组标记状态也是可行的. #include…