bfs
_九磅十五便士_
这个作者很懒,什么都没留下…
展开
-
HDU1495 非常可乐(BFS)
题目传送门 这道题其实相对上一道题来讲简单一些,因为记录路径的问题解决了。但是本题的代码量来说相对大一些。 本蒟蒻上一道题的题目传送门 本题还是有6个状态: 1.S->N 2.N->S 3.S->M 4.M->S 5.N->M 6.M->N 既然有三个瓶子,那么需要开一个三位数组来记录这个状态。 在每一次bfs之前都判断这是否能平分(也就是说任意两个瓶子,能平均分配所有的可乐) 这道题和正常的bfs都一样,无非就是记录路径长度的数组在本道题中开成三维的了。然后把所有的状态原创 2021-04-11 19:07:54 · 96 阅读 · 0 评论 -
POJ3414 Pots(BFS+记录路径)
题目传送门 话说BFS的搜索树我觉得还是挺巧妙的,这道题用到了用struct入队,还是相对来说比较巧妙。 首先这道题每一个操作步骤都有6个分支: 1.装满1 2.装满2 3.倒空1 4.倒空2 5.1倒2 6.2倒1 六个搜索分支因为只有六种情况,所以可以用一个string数组来存储这六种状态,只用记录这个状态所对应的数组下标的顺序,当然题目读到这,我还是没有立刻想到用bfs来完成本题,接下来,题目要求搜索到步骤最小的情况,因此必是bfs。 既然是BFS搜索树,那必然是每种情况都先入队,在每一种情况的最先开原创 2021-04-11 18:58:32 · 90 阅读 · 0 评论 -
POJ3278 Catch That Cow (BFS)
题目传送门 这道题刚开始原本想用dp做,但是结果不对,求大佬解答呜呜呜~ 这道题一共有三个分支,分别是: x+1消耗单位时间。 x-1小号单位时间。 x*2小号单位时间。 那么现在BFS,(利用BFS的最短性质)BFS对三种情况分别进行增减。 下面是ac代码 #include<iostream> #include<cstring> #include<queue> using namespace std; bool st[2100000]; int dp[2100000];原创 2021-04-08 22:31:26 · 89 阅读 · 0 评论 -
POJ3126 Prime Path(BFS+线性筛/埃氏筛)
这道题给出了两种做法: 首先当然要请出我们可爱的线性筛: int primes[N], cnt; // primes[]存储所有素数 bool st[N]; // st[x]存储x是否被筛掉 void get_primes(int n) { for (int i = 2; i <= n; i ++ ) { if (!st[i]) primes[cnt ++ ] = i; for (int j = 0; primes[j] <原创 2021-04-08 22:17:35 · 115 阅读 · 0 评论