Uva 1220,Hali-Bula 的晚会】的更多相关文章

题目链接: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) =…
#include<cstdio> #include<algorithm> #include<cstring> #include<iostream> #include<string> #include<map> using namespace std; map<string,int> nameCache; int nowID,n; string boss; struct Edge { int to,next; }edge[]…
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://vjudge.net/problem/UVA-1220 题意: 公司里有n个人形成一个树状结构,即除了老板以外每个员工都有唯一的直属上司.要求选尽量多的人,但不能同时选择一个人和他的直属上司.输出最多能选多少人并判断是否唯一. 思路: 树的最大独立集问题.就是需要额外判定是否是唯一的. 因为输入的都是人名,所以首先就是用map容器来处理,上下属的关系就用vector容器来处理. d[u][1]表示以u为根的子树中,选u点能得到的最大人数,f[u][1]判断这种方案是否唯一. d[…
1220 - Party at Hali-Bula Time limit: 3.000 seconds 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-workers, but imagine how an employee can enjoy a party when h…
链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3661 题意: 公司里有n(n≤200)个人形成一个树状结构,即除了老板之外每个员工都有唯一的直属上司.要求选尽量多的人,但不能同时选择一个人和他的直属上司.问:最多能选多少人,以及在人数最多的前提下方案是否唯一. 分析: 本题几乎就是树的最大独立集问题,不过多了一个要求:判断唯一性…
题意: 有一棵树,选出尽可能多的节点是的两两节点不相邻,即每个节点和他的子节点只能选一个.求符合方案的最大节点数,并最优方案判断是否唯一. 分析: 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[…
题意:公司有 n 个人形成一个树形结构,除了老板都有唯一的一个直系上司,要求选尽量多的人,但不能同时选一人上和他的直系上司,问最多能选多少人,并且是不是唯一的方案. 析:这个题几乎就是树的最大的独立集问题,只不过多一个判断唯一性而已.用两个数组,一个用来记录人数,一个用来判断唯一性. d[u][0],表示以 u 为根的子树中,不选 u 点能够得到最大人数,那么d[u][1]就是选 u 点能达到最大人数. f[u][0]类似,表示以 u 为根的子树中,不选 u 点是否唯一,那么f[u][1]就是选…
有 n 个员工,n-1个从属关系. 不能同时选择某个员工和他的直接上司,问最多可以选多少人,以及选法是否唯一. 树上的最大独立集问题.只不过多了一个判断唯一性. dp[u][0]表示不选这个点的状态,dp[u][1]表示选这个点的状态. 如果不选 u, 那么 u点状态是由 dp[v][0] 或者 dp[v][1],大的那个点转移过来,唯一性同时也转移. 如果选 u , 那么 u点状态是由所有的 dp[v][0] 转移过来,所以只有所有的 dp[v][0]状态的都唯一时,dp[u][1]才唯一.…