
搜索
Accsc
这个作者很懒,什么都没留下…
展开
-
HDU-1495 (BFS)
总体思路与经典的倒水问题相同(可参考刘汝佳《算法竞赛入门经典》P202-P205对Uva10603的讲解) 对于总可乐量为奇数的情况,直接输出不可能,因为对于没有刻度的整数容量的杯子,我们可以操作的最小可乐量不会小于1,因而无法平分。 下面讨论偶数的情况: 把每种状态以三个杯子中的水量排成的有序三元组表示,该三元组可看成有向图中的一个节点。如果经过一次倾倒,状态A转移成了状态B,那么在图中就...原创 2018-08-09 18:23:19 · 1790 阅读 · 3 评论 -
UVA-11624 Fire! (BFS)
这题的一个做法是先对 'F' BFS一遍,这样就可以记录下来火势到达每一个格子最早的时间,对于每个 '.' 来说,在这个火到达的最早时间之前,joe是可以走的。然后对joe BFS 一遍就可以了,重点是joe在”边上“,也就是最左边最右边最上边最下边。 特别的是,我在bfs中采用的是每产生一个新的节点就判断一下是不是终点,所以对于joe一开始就在边上的情况需要额外判断。 #include&l...原创 2018-08-10 17:48:53 · 225 阅读 · 0 评论 -
POJ-3126 Prime Path (BFS&&筛法)
用相同的花费从一个状态转移到另一个状态 这真是一个检验宽搜的完美标准 num[i]为1表示i是素数,为0表示i不是素数,用筛法可以很快地标注是不是素数。有一个小技巧就是筛法最外层的循环只要循环到最大范围的一半就可以了,因为后一半数的性质由前一半决定(如果x是小于MAX的合数,它的因子必成对出现,因子的最大值一定<=x/2<MAX/2,因而后一半数的性质以及可以确定),而他们又不会对...原创 2018-08-10 19:53:25 · 251 阅读 · 0 评论 -
HDU 2612 Find a Way (BFS)
这道题的英语水平非常的惨不忍睹(虽然作为同样精通Chinglish的中国人我完全可以看懂,但还是莫名地觉得搞xiao啊233 对两个人分别bfs一下,记录每个kfc所需的总时间,最后输出最小的即可,几点注意 1. 要求输出的答案是总步数*11,因为走一步要十一分钟 2.因为有可能某些kfc两个人都到达不了,所以可能会出现某些kfc用时为0,最后比较出最小值时选择非零值即可 3.两人的起始位...原创 2018-08-12 20:21:35 · 178 阅读 · 0 评论 -
POJ 3414 Pot (BFS)
这也是一个类似倒水问题的题 把两个杯子中的水量形成的有序数组(x,y),看作有向图中的一个顶点,起点是(0,0),终点是一个杯子的水量为C。 若一种状态A可以通过对某个杯子的某种操作转移到另一个状态B,那么图中有一条从A指向B的边。 求起点到终点的最短路,BFS即可。注意几点 1. 因为这道题需要打印路径,所以需要多设置一个保存操作的结构体数组,递归打印操作即可:我的做法是从目标终点出发,...原创 2018-08-13 18:51:59 · 257 阅读 · 0 评论 -
HDU -2181 哈密顿绕行世界问题
由于数据量其实很小,直接DFS即可,细节见注释 #include<cstdio> #include<cstring> #include<algorithm> using namespace std; bool vis[21]; int adj[21][3],cnt,tpath[20],start; void dfs(int k,int level) { i...原创 2018-08-18 17:21:23 · 427 阅读 · 0 评论 -
LeetCode 890 可能的二分法 from weekly contest 97(DFS)
把每个人看作无向图中的顶点,如果两个不能分到一组,则看作两点间有一条边。 如果一个连通图满足 1. 无环 2.有环,并且每个环上的顶点数都为偶数 这两个条件中的一个,我们就可以通过 将相邻的顶点分配到不同的组 这个策略来实现二分。 不能二分的情况是连通图中肯定出现了奇数个顶点的环,显然对于这样的环,是无法把所有相邻的顶点分到不同组的 eg 1-2 2-3 3-1 就无法二分 对于非连...原创 2018-08-12 11:44:43 · 538 阅读 · 0 评论