![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
bfs
_九磅十五便士_
这个作者很懒,什么都没留下…
展开
-
HDU1495 非常可乐(BFS)
题目传送门这道题其实相对上一道题来讲简单一些,因为记录路径的问题解决了。但是本题的代码量来说相对大一些。本蒟蒻上一道题的题目传送门本题还是有6个状态:1.S->N2.N->S3.S->M4.M->S5.N->M6.M->N既然有三个瓶子,那么需要开一个三位数组来记录这个状态。在每一次bfs之前都判断这是否能平分(也就是说任意两个瓶子,能平均分配所有的可乐)这道题和正常的bfs都一样,无非就是记录路径长度的数组在本道题中开成三维的了。然后把所有的状态原创 2021-04-11 19:07:54 · 89 阅读 · 0 评论 -
POJ3414 Pots(BFS+记录路径)
题目传送门话说BFS的搜索树我觉得还是挺巧妙的,这道题用到了用struct入队,还是相对来说比较巧妙。首先这道题每一个操作步骤都有6个分支:1.装满12.装满23.倒空14.倒空25.1倒26.2倒1六个搜索分支因为只有六种情况,所以可以用一个string数组来存储这六种状态,只用记录这个状态所对应的数组下标的顺序,当然题目读到这,我还是没有立刻想到用bfs来完成本题,接下来,题目要求搜索到步骤最小的情况,因此必是bfs。既然是BFS搜索树,那必然是每种情况都先入队,在每一种情况的最先开原创 2021-04-11 18:58:32 · 86 阅读 · 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 · 81 阅读 · 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 · 100 阅读 · 0 评论