
树形dp
文章平均质量分 51
stargazer.
夜を穿つの
展开
-
【LOJ #2983】「WC2019」数树(容斥 / 生成函数 / 树形DP / 多项式exp)
传送门感觉就是对着zxyzxyzxy博客推的不过还是记一下吧Subtask1Subtask1Subtask1显然就是求有多少条红蓝边相同如果有xxx条,答案就是yn−xy^{n-x}yn−x随便爱咋做咋做Subtask2Subtask2Subtask2考虑如果我们枚举边集合SSS设F(s)=∑T2[T1∩T2=S],G(s)=∑T1[S⊆T1∩T2]F(s)=\sum_{T_2...原创 2020-03-09 21:01:48 · 184 阅读 · 0 评论 -
【LOJ#2124】【HAOI2015】—树上染色(树形dp)
传送门简单dp即可#include<bits/stdc++.h>using namespace std;#define cs const#define re register#define pb push_back#define bg begin#define pii pair<int,int>#define fi first#define ll lon...原创 2019-10-29 19:00:29 · 137 阅读 · 0 评论 -
【BZOJ3935】—RBTree(树形dp)
传送门把距离的限制列出来好像可以单纯形做考虑f[i][j][k]f[i][j][k]f[i][j][k]表示iii的子树中有jjj个黑点,最近的点为kkk的最小代价(k不一定在iii子树内)考虑转移边u→vu\rightarrow vu→v的时候,如果u,vu,vu,v的kkk一样就可以直接转移否则是uuu的在外面vvv的在子树内,取vvv子树内最小值即可若u,vu,vu,v的都在外...原创 2019-09-04 17:09:27 · 178 阅读 · 0 评论 -
【HDU5909】—Tree Cutting(树形dp+FWT)
传送门考虑直接树形dpdpdp是O(nm2)O(nm^2)O(nm2)的考虑普通的树形背包用FFTFFTFFT优化是O(nmlogm)O(nmlogm)O(nmlogm)的异或的背包类似的用FWTFWTFWT做就可以了由于是联通块有只选子树的情况不过好像也可以直接联通块dpdpdp做到O(nm)?O(nm)?O(nm)?#include<bits/stdc++.h>usi...原创 2019-08-09 15:16:58 · 218 阅读 · 0 评论 -
【BZOJ2159】—Crash的文明世界(第二类斯特林数+树形dp)
传送门考虑由于xn=∑i=0nS2(n,i)i!(xi)x^n=\sum_{i=0}^nS_2(n,i)i!{x\choose i}xn=∑i=0nS2(n,i)i!(ix)由于(xi)=(x−1i−1)+(x−1i){x\choose i}={x-1\choose i-1}+{x-1\choose i}(ix)=(i−1x−1)+(ix−1)考虑f[i][j]f[i][j]f...原创 2019-07-30 21:28:17 · 177 阅读 · 0 评论 -
【LOJ2542】【PKUWC2018】—随机游走(Min-Max容斥+树形dp+FMT)
传送门容斥好题考虑经过一个点集所有点的期望不好处理我们考虑min−maxmin-maxmin−max容斥则ans=∑T⊆SE(min(T))ans=\sum_{T\subseteq S}E(min(T))ans=∑T⊆SE(min(T))现在我们先考虑怎么对于一个集合TTT求出有一个被访问的期望令f[i]f[i]f[i]表示点iii走到TTT中的点的期望步数,in[u]in[u]i...原创 2019-06-28 22:47:14 · 195 阅读 · 0 评论 -
【BZOJ4543】【POI2014】Hotel加强版(长链剖分)
传送门题意:求树上满足三点之间距离两两相等的三元组个数n≤1e5n\le 1e5n≤1e5原题数据是n≤5000n\le5000n≤5000考虑怎么做f[u][i]f[u][i]f[u][i]表示uuu为根,深度为iii的点的个数g[u][i]g[u][i]g[u][i]表示uuu为根,满足2点到lcalcalca的距离减去lcalcalca到uuu的距离为iii,即dep[x]+de...原创 2019-03-30 19:47:52 · 285 阅读 · 0 评论 -
【BZOJ3566】—概率充电器(树形+概率dp)
传送门简单dpdpdp考虑到充的上电的概率不好求求出每个点充不上点的概率减一下就完了令f[i]f[i]f[i]表示iii的儿子们没法给自己充电或自己没电的概率g[i]g[i]g[i]表示iii的父亲没法给自己充电的概率h[i]h[i]h[i]表示iii没法给父亲充电的概率那显然h[i]=f[i]+(1−f[i])∗pi,faih[i]=f[i]+(1-f[i])*p_{i,fa_i}...原创 2019-03-25 09:08:51 · 163 阅读 · 0 评论 -
【BZOJ5314】【JSOI2018】—潜入行动(树形dp)
传送门似乎和曾经一道简单树形dpdpdp类似?f[i][j][0/1]f[i][j][0/1]f[i][j][0/1]表示iii的子树点亮jjj个,当前这个点点不点亮的方案只不过这个是自己不会点亮自己于是f[i][j][0/1][0/1]f[i][j][0/1][0/1]f[i][j][0/1][0/1]多一维表示自己是否被点亮要考虑的情况似乎有点多?卡空间毒瘤差评#include&...原创 2019-03-08 11:59:49 · 368 阅读 · 0 评论 -
【BZOJ5252】【洛谷P4383】【2018九省联考】—林克卡特树(二分+树形dp)
毒瘤BZOJ1s传送门洛谷传送门题意有点复杂,实际上就是在求n+1n+1n+1条链,使其长度和最大考虑60分的dpf[i][j]f[i][j]f[i][j]表示iii的子树有jjj条链时的最大长度发现这个几乎无法dp对吧考虑到链上的点度数必然小于3再加一维表示iii的度数发现现在就很好维护了分类讨论一下就可以了但100分时k太大了O(nk)O(nk)O(nk)无法承受但如果...原创 2019-02-26 12:05:17 · 181 阅读 · 0 评论 -
【BZOJ5250】【2018九省联考】—秘密袭击(树形dp)
传送门据说正解要线段树合并+拉格朗日插值+生成函数我选择暴力艹标算暴力树上dp+剪枝就可以了f[i][j]f[i][j]f[i][j]表示以iii为根的子树,联通块有jjj个点时的答案如果当前所有大于枚举到的www的点都小于kkk个那么再大也不行了可以直接breakbreakbreak掉#include<bits/stdc++.h>using namespace std...原创 2019-02-26 08:54:02 · 119 阅读 · 0 评论 -
【BZOJ5290】【HNOI2018】—道路(树形dp)
传送门不说了吧,noipnoipnoip难度dpdpdpf[i][j][k]f[i][j][k]f[i][j][k]表示iii为根,两种路分别有j,kj,kj,k个的最小值大力dpdpdp就完了#include<bits/stdc++.h>using namespace std;#define ll long long#define int long longinlin...原创 2019-03-01 17:03:51 · 102 阅读 · 0 评论