动态规划-树形DP
文章平均质量分 55
Toooooocold
这个作者很懒,什么都没留下…
展开
-
HDU 5909 Tree Cutting
将树转换成有根数后进行点分治,对于每个重心u而言,v是它的子树,则:for(int j = 0; j m; j++) (dp[v][j^val[v]]+=dp[u][j])%=MOD;递归返回的时候得到:for(int j = 0; j m; j++) (dp[u][j]+=dp[v][j])%=MOD;时间复杂度是O(n*m*l原创 2016-11-01 14:28:02 · 258 阅读 · 0 评论 -
Codeforces 461B Appleman and Tree
树形DPdp[i][0]表示不包括i的联通快没有黑点的方案数dp[i][1]表示不包括i的联通块有黑点的方案数这样对于树根i,每一个插进来的子叶j,都可以判断dp[j][0]和dp[j][1]对于dp[i][0]和dp[i][1]的贡献列如两个联通块都有黑点,那么这条相连的边就要割掉代码:#include#define pb push_back#define f原创 2017-04-27 11:39:25 · 353 阅读 · 0 评论 -
HDU 6161 Big binary tree
学了波标程。 每次修改从下往上更新dp值,dp值用贪心维护:如果左右儿子有被修改过,则返回其dp值,否则往下log(n)走到底,尽量选择靠右的点。 每次查询从下往上更新答案就可以枚举所有情况了。原创 2017-08-22 23:52:34 · 651 阅读 · 3 评论 -
CodeForces Gym101158H Animal Companion in Maze
给一张图,图上的边有单向边也有双向边。双向边有一项限制是,当使用一条双向边从A->B时,不可以立刻使用这条边回去。如果图中有环,输出INF,否则输出最长路径长度。原创 2017-11-28 16:23:04 · 528 阅读 · 0 评论 -
【基环树】18牛客多校2B discount
Source:Source:Source:牛客网暑期ACM多校训练营(第二场) Problem:Problem:Problem:n种物品,两种买法,一种选择折扣价,一种选择原价购买,使得自己的父亲可以免费。求最小值买下全部物品。 Idea:Idea:Idea:基环内向树DP。先找到树上的环,对于环上的每个点悬挂的树都跑一次树DP。然后断环为链,跑一次链DP。链上考虑两种情况,断开的边为u-&g...原创 2018-07-23 21:12:57 · 242 阅读 · 0 评论 -
【树上斜率优化】18牛客多校1H Longest Path
Source:Source:Source:牛客网暑期ACM多校训练营(第一场) Problem:Problem:Problem:一棵树,两点的路径和d(u,v)d(u,v)d(u,v)为相邻边权差的平方和的总和。对于每个点,求maxvd(u,v)maxvd(u,v)\max_vd(u,v) Idea:Idea:Idea: 先考虑两遍树形DP。 down(i)down(i)down(i)表示...原创 2018-07-21 21:55:05 · 386 阅读 · 0 评论 -
【树形DP】Gym101667A Broadcast Stations
Souce:2017-2018 ACM-ICPC, Asia Daejeon Regional ContestProblem:一棵5e3的树,可以选择一些点放上基站,如果u上的基站价值为d,那么距离u小于等于d的点都会被覆盖,问使得整棵树被覆盖的最小价值。Idea:g[u][j]g[u][j]g[u][j]表示u点这颗子树里距离u点大于j的点都被覆盖的最小价值。显然g[u][j]=∑g[...原创 2018-12-04 21:25:15 · 587 阅读 · 1 评论