https://vjudge.net/problem/UVA-1220 题意: 公司里有n个人形成一个树状结构,即除了老板以外每个员工都有唯一的直属上司.要求选尽量多的人,但不能同时选择一个人和他的直属上司.输出最多能选多少人并判断是否唯一. 思路: 树的最大独立集问题.就是需要额外判定是否是唯一的. 因为输入的都是人名,所以首先就是用map容器来处理,上下属的关系就用vector容器来处理. d[u][1]表示以u为根的子树中,选u点能得到的最大人数,f[u][1]判断这种方案是否唯一. d[…
POJ 3342 Party at Hali-Bula / HDU 2412 Party at Hali-Bula / UVAlive 3794 Party at Hali-Bula / UVA 1220 Party at Hali-Bula(树型动态规划) Description Dear Contestant, I'm going to have a party at my villa at Hali-Bula to celebrate my retirement from BCM. I w…
链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3661 题意: 公司里有n(n≤200)个人形成一个树状结构,即除了老板之外每个员工都有唯一的直属上司.要求选尽量多的人,但不能同时选择一个人和他的直属上司.问:最多能选多少人,以及在人数最多的前提下方案是否唯一. 分析: 本题几乎就是树的最大独立集问题,不过多了一个要求:判断唯一性…
题意:在树的最大独立集的基础上,加上权值.求最大. 分析: 采用刷表的方式写记忆化,考虑一个点选和不选,返回方式pair 型. 首先,无根树转有根树,dp(root). 注意的是:u不选,那么他的子节点,可以选,或者不选.WA了无数次. #include <cstdio> #include <vector> #include <cmath> using namespace std; +; vector<int> G[maxn]; int a[maxn]; i…
Party at Hali-Bula Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 5660   Accepted: 2022 Description Dear Contestant, I'm going to have a party at my villa at Hali-Bula to celebrate my retirement from BCM. I wish I could invite all my co…
目录 求树的最大独立集,最小点覆盖,最小支配集 三个定义 贪心解法 树形DP解法 (有任何问题欢迎留言或私聊&&欢迎交流讨论哦 求树的最大独立集,最小点覆盖,最小支配集 三个定义 最大独立集:  对一个图选出尽量多的点组成一个集合,满足这些点之间没有边相连.所有独立集中,顶点数最多的称作最大独立集. 最小点覆盖:  对一个图选出尽量少的点组成一个集合,满足图中所有的边均有端点属于这个集合.所有覆盖集中,顶点数最少的称作最小点覆盖. 最小支配集:  对一个图选出尽量少的点组成一个集合,满足图…
Time limit :1000 ms :Memory limit :32768 kB: OS :Windows There is going to be a party to celebrate the 80-th Anniversary of the Ural State University. The University has a hierarchical structure of employees. It means that the supervisor relation for…
题意: 有一棵树,选出尽可能多的节点是的两两节点不相邻,即每个节点和他的子节点只能选一个.求符合方案的最大节点数,并最优方案判断是否唯一. 分析: d(u, 0)表示以u为根的子树中,不选u节点能得到的最大人数,f(u, 0)表示方案是否唯一. d(u, 1)表示选u节点能得到的最大人数,同理,f(u, 1)表示方案是否唯一. 状态的转移: d(u, 1)的计算:因为选了u节点,所以u的子节点都不能选.d(u, 1) = sum{ d(v, 0) | v是u的子节点 } f(u, 1)的计算:当…
题意:  给定n个人,存在上下级关系,每个人只有一个上级,求最大独立集.并判断最大独立集是否唯一 思路:d[i][0]表示以i为根的子树中,不选择第i个节点的最大独立集,f[i][0]表示以i为根的子树中,不选择第i个节点的方案是否唯一.同理,d[i][1]和f[i][1]就是选择第i个节点的情况.   状态转移:d[i][0] = ∑max(d[v][0], d[v][1]), d[i][1] = ∑d[v][0];   唯一性的转移方程见代码: if(k == 1) { //选择节点u d[…
题目链接:https://uva.onlinejudge.org/external/12/1220.pdf 题意: 公司n个人,形成一个数状结构,选出最大独立集,并且看是否是唯一解. 分析: d(i) 是 节点 i 的最优值, i 只有两种决策,就是选和不选. 转移方程: d(i) = max {1+Σ1d(j),Σ2d(j)}; Σ1是所有孙子节点,Σ2是所有儿子节点. 那么状态的定义d(i,0),节点 i 不选,d(i,1),节点 i 选. 那么状态转移方程就是: 是否唯一 f(v,0) =…