![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
bfs
EMber _
人但有追求,世界亦会让路。
展开
-
bzoj1627
裸bfs不解释。#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#define fo(i,a,b) for(int i=a;i<=b;i++)#define fd(i,a,b) for(int i=a;i>=b;i--)using namespace std;int n,m;const int N=原创 2017-03-09 16:09:51 · 182 阅读 · 0 评论 -
bzoj1646
分析:一开始我觉得肯定dp,这不是很明显? 然而没想到怎么做,因为dp不知道按什么顺序。。反正这题绝逼有dp做法,等我想出来再写。。 大部分人写的都是bfs(smg),这根本一点都不明显好吗。唉,,反正bfs的相当暴力,,直接从起点开始跑,然后左右和*2加进队列,,知道能跑到终点为止。。注意左边界为0,右边界为max(n,k)+1..#include<cstdio>#include<algor原创 2017-03-09 17:00:31 · 244 阅读 · 0 评论 -
bzoj3432
分析:一眼题,直接二分,然后用bfs判断,然而sb的我一开始以为要把每两个点之间都跑一遍。。结果走到宿舍的路上突然发现会超时。。然后想了想根本不用任意两个点之间遍历一遍,直接全图扫一遍,看看1的数量是不是等于原图就行了。。#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#define fo(i,a,b原创 2017-03-14 21:29:01 · 324 阅读 · 0 评论 -
bzoj3299
分析:传送门直接相连然后直接bfs就好。#include<cstdio>#include<cstring>#include<algorithm>//#include<cmath>#define fo(i,a,b) for(int i=a;i<=b;i++)#define fd(i,a,b) for(int i=a;i>=b;i--)using namespace std;typedef原创 2017-03-16 16:32:06 · 203 阅读 · 0 评论 -
bzoj1751 [Usaco2005 qua]Lake Counting
bfs找出联通块个数就好了#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#define fo(i,a,b) for(int i=a;i<=b;i++)#define fd(i,a,b) for(int i=a;i>=b;i--)using namespace std;const int N=1原创 2017-05-28 09:59:16 · 309 阅读 · 0 评论 -
bzoj1668 [Usaco2006 Oct]Cow Pie Treasures 馅饼里的财富
从起点开始bfs,用bfs更新dp,然后就很水了= = #include<cstdio> #include<cstring> #include<algorithm> #define fo(i,a,b) for(int i=a;i<=b;i++) #define fd(i,a,b) for(int i=a;i>=b;i--) using namespace原创 2017-06-06 08:03:56 · 331 阅读 · 0 评论 -
bzoj1748 [Usaco2005 open]Around the world 环球飞行
又见神题= = 这其实是最短路的变形,我们用bfs来跑最短路,然后用map存一下状态,判断有没有重复走。然后最短路的话稍微有一点不一样,从当前点到下一个点有两种路径,如果倒着走就要用现有路径减去,正着走就直接加。 每一次将新的点加入队列答案都加一(显然),当下一个点为1时而且路径不为0(防止你一开始走出去就折返回来),就输出答案。#include<cstdio>#include<algorit原创 2017-06-07 09:37:42 · 418 阅读 · 0 评论 -
bzoj3430 [Usaco2014 Jan]Ski Course Rating 并查集+bfs
这题正解脑洞有点大。。一开始并没有想到正解,只是会二分暴力= = 后来膜了一发题解发现原来还有人二分+可持久化并查集做的,不过这是针对t不同的情况下= =以后可以出个题祸害社会 正解是先把任意两点之间连边,记录一下出发点和到达点,然后按照边的大小排序,从小到大做,每一次用并查集将可以互通的两块联合在一起,直接计算贡献。。#include<cstdio>#include<algorithm>#原创 2017-07-22 10:42:42 · 545 阅读 · 0 评论 -
bzoj1138 [POI2009]Baj 最短回文路 DP+宽搜
POI就算是很老的题目也很锻炼思维啊。。。DescriptionN个点用M条有向边连接,每条边标有一个小写字母。 对于一个长度为D的顶点序列,回答每对相邻顶点Si到Si+1的最短回文路径。 如果没有,输出-1。 如果有,输出最短长度以及这个字符串。Input第一行正整数N和M ( 2 ≤ N ≤ 400 , 1 ≤ M ≤ 60,000 ) 接下来M行描述边的起点,终点,字母。接下来D表示询问序列长原创 2017-08-24 19:42:09 · 410 阅读 · 0 评论