
dfs树
二分抄代码
去了18ec没资格去19ec的反向训练选手
展开
-
codeforces1391E Pairs of Pairs
https://codeforces.com/contest/1391/problem/E本来以为写完D题下班了,结果队友给我讲课E题卧槽这不是标准dfs树题?现场没写完,艹,血亏100分,5月份的时候补了两道这种dfs树的题,就是建一棵dfs树出来,要么满足一种情况,要么满足另一种情况。这题就是建dfs树,如果有深度>=(n+1)/2,那么直接输出,否则则每一层分别匹配,由于深度<(n+1)/2,每层最多浪费一个,那么至少还剩(n+1)/2个点可以匹配上#include<b原创 2020-08-11 21:41:34 · 233 阅读 · 0 评论 -
codeforces1277E Two Fairs
https://codeforces.com/contest/1277/problem/E这题直接搞的话,先边双缩点,然后记录每个边双直接连的边是连的哪两个点,然后再考虑加不a,b是不是刚好是它所在边双的出口,再计算。这样写估计得200+行然而这题用dfs树就会简单许多,直接以a为起点开始跑tarjan,如果跑到b,b的某个儿子v,low[v]>=dfn[b],那么说明v所在的子树所有点到a都需要经过b,于是sum1+=son[v],然后再以b为起点做一遍一样的动作#include<原创 2020-06-03 22:02:53 · 277 阅读 · 0 评论 -
codeforces858F Wizards Tour
https://codeforces.com/contest/858/problem/F一开始看错题了,以为是一个联通块只能从一个地方出发,走最多的点,边双缩点后树形dp求每个连通块的最长路径,以后读完题还是看看样例比较好结果发现必须是长度为2的路径那么就直接dfs树了,从最底下开始处理完所有儿子后向上,先找到当前节点u所有的还有没连满的儿子节点v,就u->v->a[v]成一次。然后再对于那些连满的儿子,直接两个两个分,v1->u->v2这样。最后如果有剩下的v,说明u的原创 2020-06-03 01:15:13 · 261 阅读 · 0 评论 -
codeforces962F Simple Cycles Edges
https://codeforces.com/contest/962/problem/F这题其实就是求边仙人掌的所有边dfs树上对每一条向上的边(u,v),在(u)这个儿子的位置打上标记,标记为{v,id},id为给这个环一个编号然后再dfs一遍,让子节点的标记向上传递,如果撞了,就说明两个环共用一条边,那么这两个环的所有边都不可以。在转移的时候要注意我们只保留那个深度最小的环的标记,就从当前的点向上最远的标记,这样才可以处理所有冲突这种题应该都要注意一下树(图)是不是联通的。。。又wa原创 2020-06-02 22:00:54 · 253 阅读 · 0 评论 -
codeforces231E Cactus
https://codeforces.com/contest/231/problem/E看错题了。。。看成了要求每个点只经过一次的路径,然后想了一年。。。觉得这题比前面的2900分题难多了然后开始思考人生要求每条路径只经过一次,那就很简单了由于在仙人掌中每一个点最多属于一个环,那么在dfs树的过程中可以直接求出每个环的根节点(深度最小的)在哪,就相当于缩点了,还可以把缩点后的每个点的父亲节点是谁很方便的求出来然后答案就是u,v的路径上所有的环的个数的2次幂了,包括u,v本身所在的环,这个用l原创 2020-06-02 02:01:53 · 271 阅读 · 0 评论 -
codeforces732F Tourist Reform
https://codeforces.com/problemset/problem/732/F很显然我们把双联通分量缩点,然后最大的那个连通块就是答案但是我第一种写法,是直接从1开始dfs树,然后把所有的边定向,最后在缩点的树上,从最大连通块开始dfs,再把那些连通块之间的边的重新定向,然而这样wa13,答案没错,但是边错了??最后我改成从哪个最大连通块的某个点开始倒着定向就过了?我觉得是一样的啊。。。when i got a wa, why does this be wa,change s原创 2020-06-01 22:13:45 · 277 阅读 · 0 评论 -
codeforces19E Fairy
https://codeforces.com/contest/19/problem/E这题怎么2900分啊。。。可能以前dfs树的做法还不是well known,现在感觉最多2500了显然这题就是要求删去哪些边使得这个森林没有奇环我们只考虑dfs树每个点连向他祖先节点的奇环,如果没有奇环,那么边就随便选咯如果整个森林只有一个奇环的话,并不是这个奇环上的每条边都可以选,当然那条向上连向祖先的边是必然可选的,然而,如果有一个偶环跟这个奇环有重叠部分的话,那么偶环可以通过去掉这些重叠部分的边,和奇原创 2020-06-01 17:47:48 · 246 阅读 · 0 评论 -
codeforces1354E Graph Coloring
https://codeforces.com/contest/1354/problem/E卧槽这道水题,当时kickstart开始了比较着急,被这个3迷惑住了然后没有看出来。。。不然能上一大波分这其实就是个二分图染色,由于1,3不相连,所以互相替换是没关系的那么对于二分图染色,首先判断有没有奇环,用dfs树向上的边判断就行了然后这个题可能有很多连通块,对于每个联通块染色,2的数量只有两种,于是这就是个背包问题了,就是所有连通块的2的数量加起来,能否恰好为n2,记录一下转移路径,然后最后把原创 2020-05-18 18:47:32 · 261 阅读 · 0 评论 -
codeforces1325F Ehabs Last Theorem
https://codeforces.com/problemset/problem/1325/F做了上一题感觉自己已经领悟了dfs树的性质了,然后这题又搞了一年。。。越写越错,还是看了题解最后还是有dfs树的性质我不知道,题解里给了篇博客https://codeforces.com/blog/entry/68138,得好好学学。。。设ceil(sqrt(n))=len,就是说,如果有点的度都大于等于len,那么一定会有长度为len的环如果找不到环,那么对于dfs树中的每一个点,向上的边数原创 2020-05-16 02:01:41 · 270 阅读 · 0 评论 -
codeforces1103C Johnny Solving
https://codeforces.com/problemset/problem/1103/C乱搞了一下午,TLE on 30,换一种方式 TLE on 35。。。然后看了题解,看了一半,自己想,又wa了好久,最后还是把最后给看了。。。。假设有c个叶子节点,设dep[1]=1,那么对于这c个叶子节点(dep[i1]+dep[i2]+...dep[ic])>=n,因为每个点都会被至少一条路径覆盖到,然后根节点1可能会被覆盖到多次。那么max{dep[i1],dep[i2]...dep[ic原创 2020-05-15 22:03:58 · 265 阅读 · 0 评论 -
bzoj1064 洛谷1477 NOI2008假面舞会
https://www.luogu.com.cn/problem/P1477http://www.lydsy.com/JudgeOnline/problem.php?id=1064想了一年,各种找环姿势,wa一个晚上,卧槽,这建个正反边就搞定了得总结一下找最大环最小环的问题了,和dfs树的问题晚上脑子不太清醒,摸了摸了#include<bits/stdc++.h>using namespace std;const int maxl=1e5+10;const int原创 2020-05-14 02:19:26 · 266 阅读 · 0 评论