随笔分类 - DP——树形DP
摘要:I.IV.[WC2010]重建计划 咋感觉这篇博客里的题全可以用一些奇奇怪怪的方法水过去啊喂 首先,淀粉质+单调队列按秩合并的算法就不说了,有兴趣的可以参见本人的题解,如果能够证明或证伪该做法那更好。 现在考虑长链剖分的做法。 首先,其明显是0/1分数规划的场景,直接套上二分转判定性问题。 之后,我
阅读全文
摘要:I.III.CF1009F Dominant Indices 大约一年前,我曾用线段树合并硬刚过了这题,现在是正解。 可以设 \(f_{i,j}\) 表示 \(i\) 子树中深度为 \(j\) 的点的数量。于是直接长剖优化即可。时间复杂度 \(O(n)\)。 虽然因为我极其垃圾的实现导致还没有线段树
阅读全文
摘要:I.II.[POI2014]HOT-Hotels 加强版 易于发现,三点间两两距离相等,当且仅当两个LCA较深的点到它们的LCA距离相等,且第三个点到该LCA的距离与前两个点相同。 于是我们设 \(f_{x,i}\) 表示 \(x\) 子树中有多少对点,它们到LCA距离相同,且上述距离比该LCA到
阅读全文
摘要:II.[PKUWC2018]随机游走 无脑上minmax容斥。问题转换为求从起点 \(S\) 出发,到达集合 \(\mathbb S\) 中某一点的期望时间。 因为有环,考虑直接爆上高斯消元,时间复杂度 \(O(n^32^n)\)。 看上去不太能过?但是这份代码卡常卡得比较优美,加上又没有出菊花图卡
阅读全文
摘要:IV.[HNOI2014]世界树 人傻常数大没错了,$n\log n$还会TLE 首先当然是建出虚树来。 然后,对于虚树中每个节点(不管是否是实点),我们可以DP出管辖它的那个节点,设为$f_x$。这个可以通过二次扫描与换根法在$O(k)$的时间内通过两次dfs求出,假如你使用ST表求LCA的话。这
阅读全文
摘要:VII.[NOI2012]迷失游乐园 题解戳这儿
阅读全文
摘要:V.[SHOI2014]概率充电器 这题实际上很简单,但是我却想歪了…… 我们我们可以设$f_i$表示$i$节点熄灭的概率。之所以不设为亮起的概率,是因为熄灭当且仅当周边节点没有一个连得到它,但是亮起却是周边至少有一个能连到它——用脚趾头想都知道哪个容易求。 设$p_i$表示$i$节点本身通电的概率
阅读全文
摘要:XIII.[USACO18JAN]Cow at Large P 这题我做的时候时限1s,然后卡不过去……之后不得不发帖请求把时限调大到题面中的4s 假设当前询问了点$rt$,那么我们把这棵树变成以$rt$为根,设$dep_i$为此刻$i$节点的深度。 我们再令$f_i$表示$i$节点距离最近的叶子的
阅读全文
摘要:CLVI.CF868E Policeman and a Tree DP是很容易想的。但是如何设计状态呢? 一开始我自己假设了一个结论:在警察出发前,所有罪犯会排成此时的最优方案,然后不动;然后在警察抓到一个罪犯后,所有罪犯会再度排成最优方案,之后就一直不动了。但是如果这样做的话 \(50\) 的数据
阅读全文
摘要:CXLI.[八省联考2018]林克卡特树 一眼发现函数是凸的。然后思考发现直接一个树形DP就能进行二分的check:设 \(f_{i,0/1/2}\) 分别表示节点 \(i\),其中 \(i\) 未被选/是一条链的链顶/被一条链经过,然后直接DP就行。 为什么二分边界要开到 \(10^{12}\)
阅读全文
摘要:CXX.CF917D Stranger Trees 这里是本题的DP解法。矩阵树定理解法详见矩阵树定理学习笔记中重题III.TopCoder13369-TreeDistance。 首先,一个基础结论是,如果一张 \(n\) 个点的图,被连成一棵森林,则继续加边连成一棵树的方案数是 \(n^{k-2}
阅读全文
摘要:CXVI.[COCI2014-2015#1] Kamp 一看题面,突然感觉很弱智,不就是求出以每个点为根到其它所有特殊点的距离之和吗?这不是随随便便换个根就完事了吗? 然后兴冲冲敲出来,一测样例全挂。 后来发现并不是这样的,因为车上可以同时搭载多人,且车最后可以就停在某个地方不回去了。 稍微想想可以
阅读全文
摘要:CXIII.[JLOI2016/SHOI2016]侦察守卫 神题。 见代码即可。 #include<bits/stdc++.h> using namespace std; int n,m,p,a[500100],f[500100][25],g[500100][25],res=0x3f3f3f3f;
阅读全文
摘要:CXII.[CEOI2007]树的匹配Treasury 题解
阅读全文
摘要:CX.[POI2015]MOD 比较恶心的题目。 首先,有一个结论,即如果把两棵树通过某种方式连接起来,新树的直径的端点一定来自于原本两棵树的直径端点集合。 则考虑新树的最大直径,明显就是把两棵树的直径直接连一块,就是两棵树的直径之和再加一。 考虑新树的最小直径,则应该选择两树直径的中点(如果直径长
阅读全文
摘要:CVIII.[POI2014]MRO-Ant colony 根据下取整除法的性质(\(\left\lfloor\dfrac{\left\lfloor\dfrac{x}{y}\right\rfloor}{z}\right\rfloor=\left\lfloor\dfrac{x}{yz}\right\r
阅读全文
摘要:CVI.[CSACADEMY]Root Change 常规换根DP。设 \(f_i\) 表示 \(i\) 子树中以 \(i\) 为起点的最长路径长度,设 \(sz_i\) 表示 \(i\) 子树中边的数量,再设 \(g_i\) 表示 \(i\) 子树的答案。 则 \(f\) 和 \(sz\) 显然很
阅读全文
摘要:CIII.[APIO2014]连珠线 一般的换根DP题。 明显可以看出,最终的树一定可以通过指定一个根变成一棵有根树,所有的蓝边都可以被分成两两一组,其中每组中两条边深度递增。 于是我们可以设置DP状态。$f_{x,0/1}$表示节点$x$,它不是/是某对蓝边的中间节点时,子树中最大的蓝边权和。 简
阅读全文
摘要:LCVII.[POI2013]LUK-Triumphal arch 明显题目具有可二分性。 考虑如何check。 我们发现,一个足够聪明的B,必定不会走回头路。故最终结果一定是一条从根到某个叶子的路径。 我们发现,如果一个父亲已经染掉了它所有儿子,它剩余的操作次数便可以去染儿子,以防到了某个儿子的时
阅读全文

浙公网安备 33010602011771号