随笔分类 -  ACM--DP--树形DP

摘要:皇宫看守(树形dp) 题解: 不同于战略游戏那道题要求每边有人看守,即只能靠自己或者靠儿子,本题要求每个点有人看守,即对于点root可以靠自己靠儿子或靠父亲 设dp[root][0/1/2]表示0靠自己1靠爸爸2靠儿子 root靠自己可以从儿子的三种状态转移,但是要加上自己设看守的费用 root靠爸 阅读全文
posted @ 2020-12-02 20:00 swsyya 阅读(372) 评论(0) 推荐(0)
摘要:树的重心:对于一棵\(n\)个结点的无根树,找到一个点,使得把树变成以该点为根的有根树树时,最大子树的结点数最小。 删去重心后,生成的多棵树尽可能平衡。 性质: 性质 1 :树中所有点到某个点的距离和中,到重心的距离和是最小的,如果有两个重心,他们的距离和一样。 性质 2 :把两棵树通过某一点相连得 阅读全文
posted @ 2020-07-13 13:33 swsyya 阅读(190) 评论(0) 推荐(0)
摘要:蓝魔法师 分析:sz保存包括自身的所有子孙总节点数(为了求连通块的大小做准备) dp[i][j]表示只考虑根为i的子树,包含节点i的联通块大小为j的方案个数 dp[i][0]表示dp[i][1]+...+dp[i][k] 一棵子树根节点为u的连通块(包括u)对于它的一个子节点v,当u访问到v时,假设 阅读全文
posted @ 2020-02-24 18:28 swsyya 阅读(227) 评论(0) 推荐(0)
摘要:选点 分析:对于一颗树选出得点的权值的关系为:根节点 < 右子树 < 左子树。所以我们可以按照根节点、右子树、左子树进行 dfs 遍历,然后按照这个 dfs 序求 LIS 即为答案。用二分优化求LIS AC_Code 1 #include <iostream> 2 #include <bits/st 阅读全文
posted @ 2020-02-24 10:09 swsyya 阅读(307) 评论(0) 推荐(0)
摘要:F. Tree with Maximum Cost 学习博客:https://blog.csdn.net/LJD201724114126/article/details/85240762?utm_source=app 题解:换根 我们先设sum[u] 等于 以u为根的子树的∑ai (注意没有*距离) 阅读全文
posted @ 2020-02-22 16:04 swsyya 阅读(257) 评论(0) 推荐(0)
摘要:题目链接:here 题目分析: 放置哨兵无非两种情况,放或不放,我们可以用dp[i][1]来表示第i个结点放置哨兵,dp[i][0]来表示第i个结点不放置哨兵,我们可以从上往下,从左往右来遍历树,所以这就用到了树形DP的知识,我们很容易知道,如果父亲结点没放哨兵,那么子结点肯定要放置哨兵,如果父亲放 阅读全文
posted @ 2019-08-08 09:54 swsyya 阅读(291) 评论(0) 推荐(0)
摘要:题目链接:https://cn.vjudge.net/contest/317407#problem/A 题目理解: 题意为有n个人要开一个PARTY,编号1到n,每个人都有一个欢乐值,并且每个人都有一个直接上司,为了让气氛更好,要求在这n个人中选一些人去参加PARTY,并且选出的这些人中任意两个人之 阅读全文
posted @ 2019-08-08 09:14 swsyya 阅读(250) 评论(0) 推荐(0)

回到顶部