hdu1520】的更多相关文章

A - 树形dp Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit Status Description There is going to be a party to celebrate the 80-th Anniversary of the Ural State University. The University has a hierarchical structure…
hdu1520 http://acm.hdu.edu.cn/showproblem.php?pid=1520 题意是给定一棵树,每个结点有一个价值,要我们选择任意个结点使得总价值最大,规则是如果父亲结点被选了,那么儿子结点不可以被选,但是儿子的儿子可以被选 本来学搜索的时候找到这题搜索题,然后用搜索做的 #include <stdio.h> #include <string.h> #include <stdlib.h> #include <algorithm>…
[树形dp]就是在树上做的一些dp之类的递推,由于一般须要递归处理.因此平庸情况的处理可能须要理清思路.昨晚開始切了4题,作为入门训练.题目都很easy.可是似乎做起来都还口以- hdu1520 Anniversary party 给一颗关系树,各点有权值.选一些点出来.任一对直接相连的边连接的点不能同一时候选择,问选择出的权值和最大为多少. 考虑以u为根的子树能够选择的方法,dp[u]表示选择u时能获得最大收益.dp2[u]表示不选u时能获得的最大收益.则u不选时,为dp2[u]=max{dp…
#include<iostream> #include<cmath> #include<algorithm> #include<vector> #include<cstdio> #include<cstdlib> #include<cstring> #include<string> using namespace std; #define maxn 6005 struct node{ int to,net; }…
A - Anniversary party Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Practice HDU 1520 Description There is going to be a party to celebrate the 80-th Anniversary of the Ural State University. The Universit…
基本的树形dp #include <cstring> #include <cstdio> #include <vector> using namespace std; ; int n; int weight[MAX_N]; vector <int> edge[MAX_N]; bool vis[MAX_N]; ]; int root; void dfs(int father, int u) { ; i < (int)edge[u].size(); i++…
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=1520题意:上司和直系下属不能同时参加party,求party的最大活跃值.输入: 输入n个结点,接下来的n行,表示1~n的每个结点分别具有的活跃值,输入a,b,表示b是a的上司,当a==0&& b==0时,该组数据输入结束.输出:由于直接有上司和下属关系的两个人不能同时参加party, 求出能让party活跃值最大的方案(求出最大的活跃值即可).状态转移方程: dp[i][1]+=…
树形dp入门,在树上进行dp. 状态转移方程: dp[i][0] = max(dp[j][0], dp[j][1]);//i为j的上司 并且i不来 dp[i][1] = dp[j][0];//i来了 用vector实现 rt表示树. #include <cstdio> #include <cstring> #include <iostream> #include <vector> using namespace std; ; vector<int>…
题意:给出一棵树,(上下级关系)每个节点都有一个权值,要求选出一些节点满足这些节点任意连个点都不是直接的上下级关系,可以得到的最大权值是多少? 分析:对于每个点有两个状态选或者不选,用状态数组dp[u][0]和dp[u][1]表示,对于当前u节点作为根节点的子树,若选择改点u,则状态方程是: dp[u][1]=max(dp[u][1],dp[u][1]+dp[v][0]);若不选则方程是:dp[u][0]=dp[u][0]+max(dp[v][0],dp[v][1]); 程序: #include…
题目大意:一棵树,每个节点都带权.从中取出一些节点,并且子节点不能与父节点同时取,求能取得的最大值. 题目分析:定义状态dp(u,0/1)表示u点不取/取.则状态转移方程为: dp(u,1)=sum(dp(v,0)) dp(u,0)=sum(max(dp(v,1),dp(v,0))) 其中,v为u的子节点. 代码如下: # include<iostream> # include<cstdio> # include<vector> # include<cstring…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1520 题意:举办一个party,候选人当中有很多人之间有上下级关系,求没有直接上下级的最多的人数. 分析:dp[i][0]表示以点i为根节点的整棵树不取根节点i得到的最大值,dp[i][1]表示以点i为根节点的整棵树取根节点i得到的最大值. 易得到:dp[u][0]+=max(dp[v][0],dp[v][1]),dp[u][1]+=dp[v][0](其中v是u的孩子). #include <cst…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1520 思路:树形DP的入门题 定义dp[root][1]表示以root为根节点的子树,且root本身参加party的最优值,那么dp[root][1]+=Σdp[son][0]+happy[root]; dp[root][0]表示以root为跟节点且root本身没有参加的最优值,那么dp[root][0]+=max(dp[son][0],dp[son][1]); 如果不理解,可以参考我对hdu105…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1520 题意:职员之间有上下级关系,每个职员有自己的happy值,越高在派对上就越能炒热气氛.但是必须是他的上司不在场的情况.求派对happy值的和最大能是多少. PS:这是多组输入,一开始还没看出来... dp[i][0]代表第i个职员不来的情况下的快乐值,dp[i][1]是第i个职员来的情况下的快乐值 那很显然有 dp[上司][来] += dp[下属][不来];dp[上司][不来] += Max(…
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1520 一个公司去参加宴会,要求去的人不能有直接领导关系,给出每一个人的欢乐值,和L K代表K是L的直接领导,问最大的欢乐值是多少. 将公司的关系建为一棵树,从最大的老板向下dfs dp[i][0] 代表以编号为i的那个员工为根的一棵子树(不包含i)的最大欢乐值. dp[i][1] 代表以编号为i的那个员工为根的一棵子树(包含i)的最大欢乐值. 那么得到状态转移方程假设j为i的下属 dp[i][0] =…
判断最大的欢喜值,如果上司来了,直系下属就不来 如果子节点j不来那么dp[i][1]+=dp[j][0];如果子节点j来那么dp[i][0]+=max(dp[j][0],dp[j][1]);//因为j不来i也可以不来 递归的求子节点值 #include<map> #include<set> #include<cmath> #include<queue> #include<stack> #include<vector> #include…
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 forms a tree rooted at the rector V. E. Tretyakov. In order…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1520 题目: 题意:一个学校要办校庆,校长决定邀请员工参加,但是下属和他的直系同时参加的话,下属将会无法开心的玩(每个人都有一个开心值),问怎样邀请才能使得总的开心值最大.(关系图为树形) 思路:树形dp,每个人都有邀请和不邀请两种状态.加入邀请了当前这个人,那么就不能邀请他的下属:如果不邀请当前这个人,那么既可以邀请他的下属,也可以不邀请他的下属,为了让总的开心值最大,取他的下属两种情况下子树开心…
Anniversary party Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 15968    Accepted Submission(s): 6125 Problem Description There is going to be a party to celebrate the 80-th Anniversary of the…
题目链接 题意:要开派对,邀请了上司就不能邀请他的下属,邀请了下属就不能邀请他的上司,每个人有一个值,求邀请的人的总值最大 第一行给出一个数n,代表有n个人. 下面n行分别给出n个人的的值 再下面n行每行给出L,K;K是L的上司 以0 0结束一组输入 树形dp:把每个人看成一个点,则该点有两个状态:邀请或没被邀请 定义f[u][0]为节点没被邀请时的值:f[u][1]为节点被邀请时的值 状态转移方程: f[u][0]=sum(max(f[v][0],f[v][1])//v为u的下属 f[u][1…
Anniversary party HDU - 1520 题意:你要举行一个晚会,所有人的关系可以构成一棵树,要求上下级关系的人不能同时出现,每一个人都有一个rating值,要求使整个晚会的rating值最大. /* 解题思路:树形dp,随意从一个点开始扩展,把周围所有节点的dp都解决出来,然后加上去即可. 用dp[i][0]表示不选中i号,周围的都可以选的最大值,dp[i][1]表示选中i号,那么周围都不能选的最大值. 则 dp[i][0]+=(dp[j][1],dp[j][0]) dp[i]…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1520 Anniversary party Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 12366    Accepted Submission(s): 5009 Problem Description There is going to…
原题地址:http://poj.org/problem?id=2342 题目大意: 上司和下属不能同时参加派对,求参加派对的最大活跃值. 关系满足一棵树,每个人都有自己的活跃值(-128~127) 求最大的活跃度. 树形DP入门题. 首先讲解一下树形DP,顾名思义,树形DP一定是在树上的DP,与普通的DP相似,具有两个方向. 1.根---->叶 2.叶---->根 其中第二种最为常用.实现方法:从根节点开始DFS(深度优先搜索),一直搜索到叶节点,然后根据其特殊性质赋值.通过回溯更新到根节点.…
Anniversary party Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 11060    Accepted Submission(s): 4582 Problem Description There is going to be a party to celebrate the 80-th Anniversary of the…
Anniversary party Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 9976    Accepted Submission(s): 4234 Problem Description There is going to be a party to celebrate the 80-th Anniversary of the…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2412 题意:给定一棵关系树 , 从中选择一些点 , 使这些点均不存在亲子关系 , 最多能取多少个点 , 并且判断取法是否唯一 . 分析:如果这题没有判断唯一性,就和hdu1520一样了.设 dp[i][0] 为在以 i 为根的子树中 , 不选择点 i 最多能够选的数目 ,dp[i][1] 为选择 i 点的最多数目 . 状态转移方程 : 当 u 为叶子节点时 : dp[u][0]=0; dp[u][1…
hdu 2196 http://acm.hdu.edu.cn/showproblem.php?pid=2196 input 5//5个结点 1 1//表示结点2到结点1有一条权值为1的边 2 1//表示结点3到结点2有一条权值为1的边 3 1 1 1 要我们求从任意结点出发的最长路径. 思路:一棵树上从某个结点出发的最长路径,肯定是①从该结点出发经由子树到大叶子结点.②从该结点出发经由父结点,然后到大叶子结点.      这两者中的最大者 ①可以用一遍dfs求出任意结点到叶子结点的最大值. ②也…
POJ 2342 Anniversary party / HDU 1520 Anniversary party / URAL 1039 Anniversary party(树型动态规划) Description 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 emp…
HihoCoder: 1041(点) 1063(边) 1035(边) HDU1520 (签到) HDU2415(emm) 目前我遇到的树形DP有两类: ∂:点处理,大概就是点的乱搞,比如找一些点,这些点权值和最大.dp[node][m],表示给node为节点的子树分配m个点的最优结果 ß:边处理,路径问题,由于‘一笔画’或者其他要求,要求一条边一条边的走,需要加一维表示是否回到起点.dp[node][m][state],state表示是否回来等等. 待续…
树形DP1.简介:树是一种数据结构,因为树具有良好的子结构,而恰好DP是从最优子问题更新而来,那么在树上做DP操作就是从树的根节点开始深搜(也就是记忆化搜索),保存每一步的最优结果.tips:树的遍历有从叶子节点->根节点和从根节点->叶子绩点两种节点,个人习惯从根节点开始遍历2.树形DP的状态定义:一般来说,树形DP的状态定义根据实际情况来定义,比如 HDU1520的定义为dp[maxn][2]. 转移方程为:if(i来) dp[i][1]+=dp[j][0]//j是i的子节点 else d…
树形 DP 总结 本文转自:http://blog.csdn.net/angon823/article/details/52334548 介绍 1.什么是树型动态规划 顾名思义,树型动态规划就是在“树”的数据结构上的动态规划,平时作的动态规划都是线性的或者是建立在图上的,线性的动态规划有二种方向既向前和向后,相应的线性的动态规划有二种方法既顺推与逆推,而树型动态规划是建立在树上的,所以也相应的有二个方向: 1.叶->根:在回溯的时候从叶子节点往上更新信息 2.根 - >叶:往往是在从叶往根df…