"Link" 首先可以很自然地想到把虚树建出来然后在上面搞。 我们做两遍dp,把每个点的$r_i$更新成从这个点出来能覆盖的最远距离和从其他点出来经过这个点后能够覆盖的最远距离的最大值。 这样我们保证了对于一条边$(u,v)$($u$是$v$的父亲),一定存在一个点$w$使得$v$比$u$更新$w$ ...
分类:
其他好文 时间:
2020-02-15 09:19:07
阅读次数:
63
虚树+DP DP:$f[u]$ 表示 $u$ 的答案,$sz[u]$ 表示 $u$ 向上传递的贡献(在一开始是用来记录子树中需要截断多少个关键点)。当前点是关键点,则全部截断子树中的点并令 $sz[u]=1$ ,向上传递;当前点不是关键点,若底下有多个点,则把当前点去掉,若底下只有一个点,向上传递。 ...
分类:
其他好文 时间:
2020-01-18 11:01:12
阅读次数:
65
虚树+DP 每个点记录自己到根路径上的最小边权 $mn[u]$ ;DP时初始化 $ans[u]=\sum\limits_{v\in son_u} ans[v]$ ,如果是关键点则 $u$ 的答案 $ans[u]=mn[u]$ ,若不是关键点则 $ans[u]=\min(ans[u],mn[u])$ ...
分类:
其他好文 时间:
2020-01-18 10:45:44
阅读次数:
66
虚树+DP 建出虚树;第一问考虑每条边的贡献是 $w(u,v)\times sz_v\times (k sz_v)$ ;第二问第三问每次有新子树时,先计算答案,再更新最小值和最大值。 2020.01.17 ...
分类:
其他好文 时间:
2020-01-17 21:18:48
阅读次数:
53
"题目链接" 之前没看懂题意就把这题扔了,现在一看是读错题意了 简化版题意 给出一颗树(这个图的最短路径生成树),每个点初始颜色为$0$ 两种操作: 1. 将部分点颜色取反 2. 给出一些点,建出虚树(边权为两点树上距离),求最小割边代价使得虚树上没有颜色为$1$的点与根联通 那这就很模板了: 设$ ...
分类:
其他好文 时间:
2020-01-09 22:42:29
阅读次数:
125
[SDOI2017]天才黑客 (虚树+最短路) ~~(原谅我写不出简单题意)~~ 可以看到与$trie$树上的字母以及$lcp$并没有关系。。 以边作为点,可以写出一个非常简单的最短路$dis_i=min \lbrace dis_j+dep_{LCA(d_i,d_j)}+c_i|v_j=u_i\rb ...
分类:
其他好文 时间:
2019-12-25 13:13:05
阅读次数:
90
核心思想: (听名字高大上,实际上没什么东西……虚树的题主要难在如何操作虚树) 给出$k$个关键点,我们要建出一棵只包含这些关键点和他们$lca$的点数最少的树,以实现$dp$等操作。 标志性的数据范围是$\sum{k}\leq 10^{5}$之类的。 建树方法: 1.将所有关键点按$dfs$序排序 ...
分类:
其他好文 时间:
2019-12-13 23:55:51
阅读次数:
159
直接把 r 加进去建虚树, 考虑虚树上的dp, 我们考虑虚树的dfs序的顺序dp过去。 dp[ i ][ j ] 表示到 i 这个点为止, 分成 j 组有多少种合法方案。 dp[ i ][ j ] = dp[ i - 1 ][ j ] * (j - have[ i ]) + dp[ i - 1 ][ ...
分类:
其他好文 时间:
2019-11-06 00:33:37
阅读次数:
86
"题目链接" 问题分析 首先看数据范围不难发现是虚树。 但是这个DP怎么写的我这么难受…… 应该是不难的DP,$F[i][0]$表示$i$不占领,$F[i][1]$表示$i$占领,然后分类讨论……具体的见代码吧…… 参考程序 ...
分类:
其他好文 时间:
2019-09-29 17:03:40
阅读次数:
80
问题引入 "SDOI2011消耗战" 虚树 按照朴素的做法,就是对于每一个询问都跑一边DP。 $$ Dp[i] = Dp[ i ] + \min( Dp[Son],Cost[i,Son]) \,\,\,(Son不为关键点)\\ Dp[i] = Dp[ i ] + Cost[ i, Son ] \,\ ...
分类:
其他好文 时间:
2019-09-26 21:48:02
阅读次数:
109