题意: 在一个外向基环树森林里求最长上升子序列。 此处的子序列是指在一条路径上。 n <= 100000 解: 硬是想不出来...... 回忆一般的最长单增子序列做法,我们有个f[]数组表示的是i长度的最小结尾。 那放到树上怎么搞呢? 我们可以DFS,然后发现每到一个点,f数组只会变动一位,于是我们 ...
分类:
其他好文 时间:
2018-09-29 21:28:46
阅读次数:
125
链接:http://acm.hdu.edu.cn/showproblem.php?pid=6393 思路:n个点,n条边,也就是基环树。。因为只有一个环,我们可以把这个环断开,建一个新的点n+1与之相连,然后就按照树链剖分求边权的方法分类讨论下,过不过这条被分开的边,一共有三种情况取值最小的。 实现 ...
分类:
Web程序 时间:
2018-09-25 22:57:35
阅读次数:
251
Problem "CodeForces 835F" 题意:求基环树删去环上任意一边后直径最小值,直径定义为所有点对最近距离的最大值 Solution 首先明确删去环上一点是不会影响树内直径的,所以应当先把所有树的直径求出来,这是树形Dp可以解决的,同时建议使用树形Dp,可以一次性求出接下来要用到的数 ...
分类:
其他好文 时间:
2018-09-18 14:26:18
阅读次数:
140
N个点,每个点发出一条边,那么这个图的形状一定是一个基环树森林(如果有重边就会出现森林) 那我做f[0][x]和f[1][x]分别表示对于x子树,x这个点选还是不选所带来的最大价值 然后就变成了这好几个环上不能选相邻的点,最大的价值和 我们把这个环从N到1处断开,然后钦定一下1选还是不选,统计一下答 ...
分类:
其他好文 时间:
2018-09-14 21:28:39
阅读次数:
180
没考虑可以连着两个不选……直接染色了 实际上是基环森林,对于每棵基环树,dfs找出一个环边,然后断掉这条边,分别对这条边的两端点做一边treedp,取max加进答案里 treedp是设f[u]为选u点,g[u]为不选u点,然后随便转移一下就行了 cpp include include using n ...
分类:
其他好文 时间:
2018-09-12 10:12:55
阅读次数:
159
一道基环树+树形$DP$ "原题链接" 显然输入的是内向基环树森林,且我们可以单独考虑每一棵基环树。 既然是基环树,自然先$dfs$找环,然后随便找环上的一点$r$,将其与$A[r]$的边断开,建反边,这时就会形成一棵以$r$为根的树,且每个点的子节点都是能限制它的元素。 于是我们可以在这棵树上跑树 ...
分类:
其他好文 时间:
2018-09-07 21:11:33
阅读次数:
217
[ZJOI2008]骑士 题目描述 Z国的骑士团是一个很有势力的组织,帮会中汇聚了来自各地的精英。他们劫富济贫,惩恶扬善,受到社会各界的赞扬。 最近发生了一件可怕的事情,邪恶的Y国发动了一场针对Z国的侵略战争。战火绵延五百里,在和平环境中安逸了数百年的Z国又怎能抵挡的住Y国的军队。于是人们把所有的希 ...
分类:
其他好文 时间:
2018-09-07 16:43:35
阅读次数:
147
基环树森林,然而我比较菜,直接tarjan找环。 发现缩点之后变成了DAG,每一个点往下走一定会走到一个环,缩点之后搜一遍看看会走到哪个环以及那个环的编号是多少,答案就是环的$siz$$ + $要走的路程。 比较垃圾的我忘记了判重边WA了好多发…… 时间复杂度$O(n)$。 Code: #inclu ...
分类:
其他好文 时间:
2018-09-06 02:31:26
阅读次数:
168
题意: 有n门考试,每门考试都有两个时间,存在几门考试时间冲突,求考完所有的考试,所用的最后时间的最小值 解析: 对于时间冲突的考试 就是一个联通块 把每个考试看作边,两个时间看作点,那么时间冲突的考试即为一个连通块 对于一个连通块 1、如果边数等于点数 即为一个基环树,那么明显 这个连通块的最后时 ...
分类:
其他好文 时间:
2018-09-06 00:07:45
阅读次数:
208
树: 基环树: 就是比平常的树多了一条边。。构成了一个环 做法就是 dfs去找环 然后删掉环上的任意一条边,记下u和v 分别以u 和 v 为祖结点 进行树形dp 分别求出不要u 和 不要v的值 取大的 即可 模板题: 骑士 HYSBZ - 1040 Z国的骑士团是一个很有势力的组织,帮会中汇聚了来自 ...
分类:
其他好文 时间:
2018-09-04 23:36:00
阅读次数:
1140