
树形dp
文章平均质量分 83
ez_lcw
这个作者很懒,什么都没留下…
展开
-
【XSY4320】Catalan(组合意义,DP,多项式)
题面:Catalan题解:假瑞的做法orz考虑用组合意义来做,观察递推式 fi=1i∑j=0i−1fjfi−j−1f_i=\frac{1}{i}\sum_{j=0}^{i-1}f_jf_{i-j-1}fi=i1∑j=0i−1fjfi−j−1,它除了和卡特兰数递推式很像之外,还和二叉树计数的递推式很像。同时注意到 f0=0f_0=0f0=0,所以递推式可以变为 fi=1i∑j=1i−2fjfi−j−1f_i=\frac{1}{i}\sum_{j=1}^{i-2}f_jf_{i-j-1}f原创 2022-03-11 20:02:33 · 1040 阅读 · 0 评论 -
【XSY3633】匹配(树形 DP,树链剖分,分治)
考虑最普通的 DP:设 fu,i,0/1f_{u,i,0/1}fu,i,0/1 表示 uuu 子树内恰好包含 iii 条边的最大权匹配,其中 uuu 有无被匹配。这是个树上背包,暴力 DP 是 O(n2)O(n^2)O(n2) 的。可以发现 fu,i,jf_{u,i,j}fu,i,j 关于 iii 是一个凸函数(从费用流的角度分析),这告诉我们合并两棵子树的 DP 数组的时候(hi=maxj(fj+gi−j)h_i=\max_j (f_j+g_{i-j})hi=maxj(fj+gi−j))原创 2022-02-19 22:51:08 · 660 阅读 · 0 评论 -
【JLOI2016/SHOI2016】侦察守卫(树形DP)
考虑树形 DP,假设我们已经考虑完当前子树内监听点的放置情况,根为 uuu,考虑我们要记录什么状态:uuu 子树内的监听点向子树外还能监听多远,uuu 子树内距离根最远的未被监听点有多远。发现当第二个状态存在时,第一个状态是无用的,因为若 uuu 子树内存在一个未被监听的点 vvv,设其到 uuu 的距离为 ddd,那么:uuu 子树内的监听点最远向子树外的监听距离不会超过 ddd,否则 vvv 就能被监听。vvv 最后肯定被 uuu 子树外的某个点 xxx 监听,那么所有距离 uuu 小于等于 d原创 2022-01-06 11:36:56 · 325 阅读 · 0 评论 -
【XSY3549】Tree(线段树,换根)
原题不想说(太懒了),就说一下总结到的两点想法?对于树上多次询问路径信息的问题,如果两条路径的信息无法快速合并(即不能 pushup),但是在路径两端增加/删除单点后的信息变化可以快速得出,可以试一下能不能用询问离线+类似换根 DP 的方法维护:钦定当前根为路径一端,使用数据结构维护以每个点作为路径另一端的答案。先钦定 111 为根,暴力求出 111 为路径一端时所有路径的答案,然后 dfs 换根,换根时考虑对答案造成的影响,在数据结构上修改。对于多次询问某个区间 [L,R][L,R][L,R] 的所原创 2022-01-04 16:58:41 · 537 阅读 · 0 评论 -
【HNOI2015】实验比较(树形DP,容斥)
题意:给你一棵树,你要对所有节点定一个顺序序列,形如 p1⊕1p2⊕2p3⋯pn−1⊕n−1pnp_1 \oplus_1 p_2 \oplus_2 p_3\cdots p_{n-1}\oplus_{n-1} p_np1⊕1p2⊕2p3⋯pn−1⊕n−1pn,其中 ⊕i\oplus_i⊕i 为 === 或 <<<,p1∼np_{1\sim n}p1∼n 为 1∼n1\sim n1∼n 的一个排列, 要满足父亲节点严格小于儿子节点,求不同的序列个数,其中两个序列不同当且仅原创 2021-12-29 20:45:10 · 219 阅读 · 0 评论 -
【XSY4231】人赢(图论,Hall定理,Trie树,树形DP)
首先二分答案,设为 midmidmid。现在的问题是:若 ai⊕aj≥mida_i\oplus a_j\geq midai⊕aj≥mid,则 i,ji,ji,j 之间有一条连边,判断是否存在一种选边方式使得每个点都恰好在一个简单环上(可以是自环或二元环)。这个判定条件有点奇怪,一开始感觉有些性质,考场上除了想到只能是奇环或二元环就没想到啥了……结果是一个妙妙转化,简单环可以看成置换,那么现在问题就变成了:是否存在一个 1∼n1\sim n1∼n 的排列 ppp,使得 ∀i,ai⊕api≥mid\f原创 2021-11-17 08:44:36 · 109 阅读 · 0 评论 -
【WC2019】数树(prufer序列,树上连通块DP,多项式exp)
设两棵树的边集分别为 E1,E2E_1,E_2E1,E2,那么两棵树不同当且仅当它们对应的边集不同。转化一下可以发现,染色方案等于 yn−∣E1∩E2∣y^{n-|E_1\cap E_2|}yn−∣E1∩E2∣,即由边集 E1∩E2E_1\cap E_2E1∩E2 构成的图的连通块数量。k=1k=1k=1ans=∑E2yn−∣E1∩E2∣ans=\sum_{E_2}y^{n-|E_1\cap E_2|}ans=E2∑yn−∣E1∩E2∣考虑枚举 S=E1∩E2S=E_1\ca原创 2021-11-08 15:02:29 · 350 阅读 · 0 评论 -
【LOJ2462】【2018 集训队互测 Day 1】完美的集合(容斥,树上连通块DP,exLucas)
点数-边数第二次见了(第一次是在十二省联考-希望),听说是树上连通块计数问题的一种经典方法?考虑对于一个树上连通块来说,能对所有点进行测试的点(以下称为 “合法点”)肯定也构成了一个连通块。由于选出的 KKK 个连通块有交,所以它们的并也是一个树上连通块,那么这个并中的合法点也构成了一个连通块。考虑容斥,一般的容斥的形式是 ”钦定某几个点为合法点“,但注意到合法点一定构成连通块,所以可以用 ”钦定某个点为合法点“ 的选取方案数减去 ”钦定某条边的两个端点都为合法点“ 的选取方案数,这样每一种选取方案都原创 2021-10-27 22:03:04 · 293 阅读 · 0 评论 -
【十二省联考2019】希望(容斥,换根DP,长链剖分,懒标记)
暴力的想法是考虑钦定每个点作为到达点并统计贡献,但显然这样会算重。注意到会算重的到达点一定构成了一个连通块,这是一个很好的性质,方便了我们容斥:我们直接用点的贡献减去边的贡献(一条边的两个端点同时是到达点)即可,因为一个连通块满足点数减边数等于 111。先考虑点的贡献,需要统计以某个点为根且深度不超过 LLL 的连通块个数。可以换根 DP:设 fu,if_{u,i}fu,i 表示 uuu 子树内以 uuu 为根且深度不超过 iii 的连通块个数,转移显然:fu,i=∏v(fv,i−1+1)f_{u原创 2021-10-15 07:29:58 · 195 阅读 · 0 评论 -
【XSY3331】东非大裂谷(结论,DP)
一般这种 “分段,求每段极值和的最大值” 的题都有两个结论:一段的最大值和最小值一定是该段的两个端点。证明:如果不是的话:那么我们显然可以把最小值和最大值所在位置之间的部分提取出来作为一段,而其他的部分分离出去,这样得到的答案肯定不劣。一段肯定是单调不增或单调不降的。证明:如果不是的话:假设该段为 a1,a2,⋯ ,ana_1,a_2,\cdots,a_na1,a2,⋯,an。由结论1,我们可以假设 a1a_1a1 该段的最小值、ana_nan 为该段的最大值(a1a_1a1 为原创 2021-09-10 19:57:07 · 144 阅读 · 0 评论 -
【XSY3972】树与图(树形dp,树剖,分治NTT)
题面树与图题解不难发现本题可以转化成以下题目: 给定一个 nnn 个点的有根树 ,你可以在树上选择 kkk 个点,满足对于任意两个点都不 互为祖先关系,且从根到每个叶子的路径上都恰好有一个被选择的点。求对于所有 i∈[1,n]i\in[1,n]i∈[1,n],求所有恰好选择 iii 个点的方案数。这显然可以树形 dp,设 fi,jf_{i,j}fi,j 表示以 iii 为根的子树中恰好选择了 jjj 个节点的方案数(先不考虑选择顺序),合并就是树上背包。发现这个树上背包可以用多项式乘法实现,即设原创 2021-03-18 08:13:17 · 234 阅读 · 0 评论 -
【XSY3948】行列式(行列式,树形dp)
题面行列式题解马神说:这可能是本场比赛最简单的一道题。黑人问号脸.jpg(这篇题解我很多地方写得很简略或很不严谨,所以如果有些地方看不懂请自己推一推)考虑构造矩阵 B=(x)n×nB=(x)_{n\times n}B=(x)n×n,然后设矩阵 C=A−BC=A-BC=A−B。那么矩阵 CCC 满足 Cpi,i=bi−xC_{p_i,i}=b_i-xCpi,i=bi−x,Ci,pi=ci−xC_{i,p_i}=c_i-xCi,pi=ci−x,Ci,i=di−xC_{i,i}=d_i原创 2021-03-09 22:03:35 · 270 阅读 · 0 评论 -
【XSY3919】线图(树形dp,分类讨论)
题面线图题解大力分类讨论题。显然,L(L(T))L(L(T))L(L(T)) 中的点代表着 TTT 上的一条三点链。所以 L(L(T))L(L(T))L(L(T)) 上两点的最短路显然是沿着 TTT 上两条三点链间的唯一路径走。有很多种情况,这里举一种情况吧:如图,我现在想从红线框起来的三点链走到蓝线框起来的三点链。不妨设 w1<w2w_1<w_2w1<w2,那么 dis=3w1+w2+W+3w3+w4dis=3w_1+w_2+W+3w_3+w_4dis=3w1+w2原创 2021-03-02 14:15:51 · 146 阅读 · 0 评论 -
【BZOJ4987】Tree(树形dp)
题意:给你一棵 nnn 个节点的树找出 kkk 个不同的点 a1,a2,⋯ ,aka_1,a_2,\cdots,a_ka1,a2,⋯,ak,使得 ∑i=1k−1dis(ai,ai+1)\sum\limits_{i=1}^{k-1} dis(a_i,a_{i+1})i=1∑k−1dis(ai,ai+1) 最小。首先有个容易想到的性质:这 kkk 个点一定是相邻的,那么选 kkk 个点可以看成选 k−1k-1k−1 条相连的边。但关键是我们不是要算一个环的长度,而是一条路径的长度,也就是说不用原创 2020-09-15 13:30:16 · 228 阅读 · 0 评论 -
【HEOI2015】兔子与樱花(贪心)
首先想一下题目中的操作如何转化:当一个节点被去掉之后,这个节点上的樱花和它的儿子节点都被连到删掉节点的父节点上。设当前节点为 uuu,uuu 的父节点为 fafafa,儿子个数为 sonuson_usonu。那么当我们把节点 uuu 删去时,fafafa 的樱花数会加上 cuc_ucu,儿子个数会加上 son−1son-1son−1(减 111 是因为 uuu 本来是 fafafa 的儿子但被删去了)。那么删去一个节点对其父亲的负载增加值就被我们算出来了,设为 vali=cu+sonu−1va原创 2020-07-28 20:21:47 · 345 阅读 · 0 评论 -
【SDOI2009】HH去散步(dp,矩阵快速幂)
看到题目第一眼,最暴力的想法就是设 dp(i,j)dp(i,j)dp(i,j) 表示以 aaa 为起点、iii 为终点,路径长度为 jjj 的路径数。容易得到状态转移方程:dp(u,j)=∑(v,u)dp(v,j−1)dp(u,j)=\sum_{(v,u)}dp(v,j-1)dp(u,j)=∑(v,u)dp(v,j−1)。但是我们发现一个问题:题目中要求“人物不能立刻沿着刚刚走来的路走回”,但显然这种 dp 方式是不符合要求的,所以想怎么解决。这里用到一个常用的小trick:我们先把双向边拆成两条单原创 2020-07-24 17:14:53 · 189 阅读 · 0 评论 -
【NOI2014】购票(树形dp+树剖+斜率优化)
考虑树形 dp,设 dpidp_idpi 为 iii 节点到 SZ 市的最小费用,disidis_idisi 为 SZ 市到 iii 节点的距离。显然初始化 dp1=0dp_1=0dp1=0,然后 disidis_idisi 可以提前预处理出来。然后有 dpu=min(dpv+(disu−disv)×pu+qu)dp_u=\min(dp_v+(dis_u-dis_v)\times p_u+q_u)dpu=min(dpv+(disu−disv)×pu+qu)。(vvv 为 uuu 的原创 2020-07-19 13:56:33 · 202 阅读 · 0 评论 -
【XSY1976】【BZOJ2286】【SDOI2011】消耗战(虚树,dp)
这题的dp思想还是比较容易想的,关键是如何保证时间复杂度,这时就用到了虚树的技巧。1.虚树是什么?(虚树的性质)不妨设现在询问给出了kkk个点,我们命名这些节点为关键节点。那么在我的建边方式中,虚树就是:仅包括这些关键节点以及它们两两之间的lcalcalca的一棵树。但仍然保持原树的形态和祖先关系。即若关键节点aaa在原树中是关键节点bbb的祖先,则在虚树中,aaa仍是bbb的祖先。(...原创 2019-11-30 11:48:50 · 171 阅读 · 0 评论 -
【HDU4822】【XSY2021】Tri-war
如果题目中只有两个国家,事情就非常简单了:假设只有国家AAA和BBB,我们先找出AAA和BBB的最近公共祖先lcalcalca,然后找到在路径A⟶lca⟶BA\longrightarrow lca\longrightarrow BA⟶lca⟶B上的中点midmidmid,然后分3类讨论:若dis(A,mid)==dis(B,mid)dis(A,mid)==dis(B,mid)dis(A,mi...原创 2019-10-02 11:56:27 · 212 阅读 · 0 评论 -
【XSY2444】【BZOJ4042】【CERC2014】【luogu4757】Parades(树形dp+状压dp)
题面Description从前有个CJB国,它有nnn个城市和n−1n-1n−1条道路。每条路连接两个城市。城市之间两两可达。每个城市与不超过10条道路相连。因为HZ国国家领导人来访CJB国,CJB想为HZ举行阅兵仪式。CJB规划了 mmm 条路线。路线 iii 是从 uiu_iui 到 viv_ivi 的最短路径。你是CJB国的中央军委主席,你需要确保国家安全。因此,正式阅兵时,任意...原创 2019-11-01 21:31:48 · 236 阅读 · 0 评论 -
【XSY2500】都城(树形dp)
题面DescriptionInputOutputSample Input41 42 43 4Sample Output2223HINT题解考虑到一个性质:任意两个相邻的节点,它们的ansansans值相差为1。(这是显然的,自己画一下就好了)所以我们就先任意选出一个点,将它为都城的答案求出来,再从这个节点开始遍历一遍树,通过两相邻节点间的关系求出ansa...原创 2019-08-14 21:35:06 · 270 阅读 · 0 评论