DFS
文章平均质量分 70
neither_nor
这个作者很懒,什么都没留下…
展开
-
BZOJ4602 [Sdoi2016]齿轮
DFS,记录每个点转速,判断是否矛盾即可#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;#define MAXN 1010#define MAXM原创 2016-05-20 16:16:48 · 1397 阅读 · 0 评论 -
BZOJ3440 传球游戏
我们可以考虑拆点,把每个点拆成从左边过来和从右边过来两个,这样2n个点形成了一个环套树森林,一个人满足无论如何只能经过一次当且仅当他拆出来的两个点x和y满足x不是y的祖先,y不是x的祖先且x,y都不在环上dfs一下即可#include#include#include#include#include#include#include#include#include#inclu原创 2016-09-13 17:01:05 · 615 阅读 · 0 评论 -
BZOJ2093 [Poi2010]Frog
我们发现到了一个点之后会跳到哪个点是固定的,于是整个图形成了环套树森林,得到了这棵环套树我们就能得出答案,那么我们考虑如何算距离每个点第k近的点发现距离一个点i第0~k近的点(第0近的点就是i自己)组成了一个包含第i个点的长度为k+1的区间,且第k近的点是区间的一个端点,那么我们维护这个区间i得1时区间一定是[1,k+1],那么我们考虑i++之后会对区间有什么影响,设区间左端点为q,右端点原创 2016-09-14 09:00:35 · 812 阅读 · 0 评论 -
BZOJ2278 [Poi2011]Garbage
首先题里的环说的是简单环然后我们发现状态不改变的边是没有用的,因为状态不改变的边一定被走了偶数次,而从中任挑两次出来我们都可以把这条边删掉然后把两个环拼一起能把一张图的边集拆成一个个简单环的充要条件是所有点的度数为偶数,即从任意点出发都有欧拉回路然后我们从任意点出发找欧拉回路,每次从x走到y的时候都把x推到栈里,然后若某次深搜到了x且x在栈里,就一直弹栈直到把x弹出去,弹出去的点之间的原创 2016-09-05 14:38:14 · 1023 阅读 · 0 评论 -
BZOJ4345 [POI2016]Korale
在病房里日题真是一种独特的体验……首先考虑求第一问,我们先把所有元素排序,我们用优先队列维护选数的集合,对每个集合维护集合里的元素的和v和最后一个元素(即最大的元素)lst,初始的时候我们把只包含最小元素的集合推入队列,那么我们取出一个队头元素之后,如果队头的lst不是最大的元素,我们只需要再向队列里推入当前集合插入lst+1后的集合以及先删除lst再插入lst+1的集合。如果lst是最大元素原创 2016-12-17 21:30:49 · 1197 阅读 · 2 评论