支配树
zxyoi_dreamer
退役了退役了爬了爬了,搞个锤子算法竞赛,不如好好享受大学生活。
展开
-
2019.01.16【HDU5359】Group(SCC)(支配树)
传送门题意:给出一个有向图,求出分别删掉每条边之后强连通分量数量是否变化。解析:我用三个小时的浪费证明了一件事:stack的空间常数比vector不知道大了多少倍。。。最后把stack换成vector就AC了???卡常三小时,AC一秒钟。。。去UOJ群里面问了一下,标准规定的stack底层容器是deque???然后手动改成stack<int,vector<int&g...原创 2019-01-16 20:02:31 · 323 阅读 · 0 评论 -
2019.01.16【CodeForcesGYM100513】L. Useful Roads(支配树)(DFS序)
传送门解析:为什么这道题卡了我50多分钟?因为STL。。。我也不知道为什么,我把vector换成了stack后,减少了每次init清空vector的常数。然后我就从被卡常变成了跑得飞快?思路:这道题要求哪些边能够在以111开头的简单路径中出现。可以,这很不支配树。所以我们好好想想这个限制怎么转化。发现对于一个边&amp;lt;u→v&amp;gt;&amp;lt;u\righ...原创 2019-01-16 16:33:03 · 324 阅读 · 0 评论 -
2019.01.16【CodeChef-GRAPHCNT】Counting on a directed graph(支配树)
传送门解析:考虑我们要统计的这个东西,只需要“存在”一条满足条件的路径就行了。换句话说,合法点对的必经点除了111之外不能有其他的。那就是支配树上LCALCALCA为111的点对,这不就是个简单东西了吗但是求支配树要注意一点这不是一个DAG。。。所以这个只能用Lengauer−TarjanLengauer-TarjanLengauer−Tarjan求一发支配树。然后dfs求出支配...原创 2019-01-16 12:56:20 · 200 阅读 · 0 评论 -
2019.01.16【HDU4694】Important Sisters(支配树)
传送门解析:支配树裸题。按照题目要求就是求支配树上点到根的路径和就行了。直接Lengauer−TarjanLengauer-TarjanLengauer−Tarjan走一发再DFSDFSDFS一遍就完了。注意输出格式,每行最后一个数字后面一定不能有空格,不然会PE(HDU终于知道用PE而不是WA来提示了好感动)代码:#include<bits/stdc++.h>us...原创 2019-01-16 12:15:03 · 194 阅读 · 0 评论 -
2018.01.15【NOIP训练】节目(支配树)(主席树优化建图)
传送门解析:首先这个是一个连通性问题,显然考虑建图。然后这个限制是形如区间的形式,考虑线段树优化建图。然而这个限制略显窒息,因为有两维啊,一维时间一维权值,考虑以时间为根,权值为关键字建主席树。由于是前面的可以通向后面,考虑从后往前可持久化,对应节点从前往后连有向边。显然这样子建出来的图的连通性和原图是相同的。然后这个询问,显然就是支配树路径上实节点的个数啊。求出支配树后从111...原创 2019-01-15 21:40:23 · 748 阅读 · 0 评论 -
2019.01.15【ZJOI2012】【BZOJ2815】【洛谷2597】灾难(支配树)
BZOJ传送门洛谷传送门解析:其实就是要在DAGDAGDAG上求一个支配树。不过我们并不清楚哪些点是起始点,所以建立虚点000,向所有入度为000的点连边。求出以000为根的支配树,然后dfsdfsdfs求出树上的sizsizsiz,然后就没了。。。代码:#include<bits/stdc++.h>using namespace std;#define ll lo...原创 2019-01-15 20:16:28 · 151 阅读 · 0 评论 -
【模板】Lengauer-Tarjan算法求支配树
参考题目:洛谷P5180解析:填了N久之前留下的大坑,题解什么时候再写吧代码:#include<bits/stdc++.h>using namespace std;#define ll long long#define re register#define gc get_char#define pc put_char#define cs constnames...原创 2019-01-14 21:27:58 · 463 阅读 · 0 评论 -
2019.01.19【BZOJ3281】小P的烦恼(支配树)
传送门解析:首先本题数据不是DAG。。。对的就是数据有误不然有更加优秀的做法。。。思路:必经边是吧,那就化边为点建立支配树。跑最短路,因为我们要覆盖。。然后我们把所有必经边取出来DP出前缀和后缀单条最大值,然后考虑两条在某一个端点重合,再来一次DP。然后统计一下答案和剩余的必经边的权值。完了。如果是DAG的话判断必经边可以做到O(n+m)O(n+m)O(n+m)而不是Len...原创 2019-01-19 11:18:47 · 499 阅读 · 0 评论 -
2019.01.17【CodeForces757】F. Team Rocket Rises Again(最短路)(支配树)
传送门解析:题意:给出一个有向图,求删除一个节点后,最多可能有多少个从SSS开始的最短路边长(删除的节点距离变为INF)(不可以删除S)思路:支配树裸题。显然删除的点要在SSS到其他点的最短路上,而且是必经点。跑一个最短路,构建出以SSS为根的最短路DAG,然后Lengauer-Tarjan一波求出支配树。选择SSS最大的儿子,就完了。。。当然DAG有常数较小的做法,不过在允许边权...原创 2019-01-17 11:29:37 · 162 阅读 · 0 评论