随笔分类 -  动态规划_树形dp

摘要:用dfs序+子树大小 >>>线性dp 事实上这道题这样做相当于用线段树做RMQ 但是相当于依赖背包通法吧 #include<iostream> #include<cstdio> #define ri register int #define u int namespace opt { inline 阅读全文
posted @ 2019-11-12 16:11 pai_hoo 阅读(113) 评论(0) 推荐(0)
摘要:用dfs序+子树大小 >>>线性dp #include<iostream> #include<cstdio> #define ri register int #define u int namespace opt { inline u in() { u x(0),f(1); char s(getch 阅读全文
posted @ 2019-11-12 15:47 pai_hoo 阅读(107) 评论(0) 推荐(0)
摘要:树上分组背包模型, 即每个子树选一种状态,状态为f[x][y]表示以x为根的子树中选y个的最大价值,怎么选并没有影响 注意y>=1则x必须选,即x必须先选了,y即其子节点才能选 同样是森林,需要建立虚点N+1连向无先行课的课 #include<iostream> #include<cstdio> # 阅读全文
posted @ 2019-11-07 17:07 pai_hoo 阅读(124) 评论(0) 推荐(0)
摘要:每个节点只与其子节点状态有关,所以设f[x][0/1]表示x点不选或选 建立一个虚点N+1链接到所有最高级的没有上司的上司,答案就是f[N+1][0],因为虚点不可选 #include<iostream> #include<cstdio> #define ri register int #defin 阅读全文
posted @ 2019-11-07 16:39 pai_hoo 阅读(154) 评论(0) 推荐(0)
摘要:【问题描述】图图是一个很萌很萌很可爱的好孩纸。他正在玩一款策略游戏, 地图由 n 座城市组成, 并由 n - 1 条无向带权边连接成树形结构。 为了解决物资补给, 图图需要在这 n 座城市选出若干座城市建立机场, 其中在第 i 座城市建立机场的代价是 cost[i]。建立机场之后, 每座城市得到补给 阅读全文
posted @ 2019-10-29 14:41 pai_hoo 阅读(358) 评论(0) 推荐(0)
摘要:https://www.luogu.org/problem/P5258 题目描述 Waldives 有 NN 个小岛。目前的交通系统中包含 N-1N−1 条快艇专线,每条快艇专线连接两个岛。这 N-1N−1条快艇专线恰好形成了一棵树。 由于特殊的原因,所有 N-1N−1 条快艇专线都是单向的。这导致 阅读全文
posted @ 2019-10-25 17:49 pai_hoo 阅读(159) 评论(0) 推荐(0)