hdu1520 树形dp
树形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;
const int MAXN = ;
vector<int> rt[MAXN];
int dp[MAXN][],n,vis[MAXN], pa[MAXN];
int max(int x,int y){
return x>y?x:y;
}
void tree_dp(int root)
{
vis[root] = ;
int len = rt[root].size();
for(int i=; i<len; i++){
if(!vis[rt[root][i]]){
tree_dp(rt[root][i]);
dp[root][] += dp[rt[root][i]][];
dp[root][] += max(dp[rt[root][i]][], dp[rt[root][i]][]);
}
}
}
int main()
{
int i;
while(~scanf("%d",&n))
{
memset(dp,,sizeof(dp));
memset(vis,,sizeof(vis));
memset(pa,-,sizeof(pa));
for(i=; i<=n; ++i){
int v;
rt[i].clear();
scanf("%d",&v);
dp[i][] = v;
}
int x,y;
while(scanf("%d%d",&x,&y)){
if(!x && !y)break;
pa[x] = y;
rt[y].push_back(x);
}
int root = ;
while(pa[root]!=-)
root = pa[root];
tree_dp(root);
printf("%d\n",max(dp[root][], dp[root][]));
}
}
hdu1520 树形dp的更多相关文章
- HDU1520 树形DP入门
Anniversary party Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
- hdu1520树形dp入门
题目链接 题意:要开派对,邀请了上司就不能邀请他的下属,邀请了下属就不能邀请他的上司,每个人有一个值,求邀请的人的总值最大 第一行给出一个数n,代表有n个人. 下面n行分别给出n个人的的值 再下面n行 ...
- hdu1520 树形dp Anniversary party
A - Anniversary party Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I6 ...
- hdu1520树形dp第一题
判断最大的欢喜值,如果上司来了,直系下属就不来 如果子节点j不来那么dp[i][1]+=dp[j][0];如果子节点j来那么dp[i][0]+=max(dp[j][0],dp[j][1]);//因为j ...
- hdu1520 第一道树形DP,激动哇咔咔!
A - 树形dp Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Submit Sta ...
- hdu1520 (树形dp)
hdu1520 http://acm.hdu.edu.cn/showproblem.php?pid=1520 题意是给定一棵树,每个结点有一个价值,要我们选择任意个结点使得总价值最大,规则是如果父亲结 ...
- 【树形dp小练】HDU1520 HDU2196 HDU1561 HDU3534
[树形dp]就是在树上做的一些dp之类的递推,由于一般须要递归处理.因此平庸情况的处理可能须要理清思路.昨晚開始切了4题,作为入门训练.题目都很easy.可是似乎做起来都还口以- hdu1520 An ...
- hdu1520 Anniversary party 简单树形DP
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1520 思路:树形DP的入门题 定义dp[root][1]表示以root为根节点的子树,且root本身参 ...
- HDU1520:Anniversary party(树形dp第一发)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1520 一个公司去参加宴会,要求去的人不能有直接领导关系,给出每一个人的欢乐值,和L K代表K是L的直接领导 ...
随机推荐
- 递归:codevs 1251 括号
codevs 1251 括号 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 计算乘法时,我们可以添加括号,来改变相乘的顺 ...
- tarjan算法求割点cojs 8
tarjan求割点:cojs 8. 备用交换机 ★★ 输入文件:gd.in 输出文件:gd.out 简单对比时间限制:1 s 内存限制:128 MB [问题描述] n个城市之间有通讯网 ...
- ajax请求json数据案例
今天有这样一个需求,点击六个大洲,出现对应的一些请求信息,展示在下面,请求请求过后,第二次点击就无需请求.如图所示:点击北美洲下面出现请求的一些数据 html代码结构: <div class=& ...
- EDM总结
1. 使用table 布局,align="center" 2. 尽量不要用padding-left ,padding-right 样式: 3. CSS的浮动定位: 4. 不 ...
- python中for和if else的使用
In []: a = set('abcd') In []: b = set('ef') In []: def match(x,y): ....: for i in x: ....: for j in ...
- POJ 3321 Apple Tree
树状数组. 代码: #include <iostream> #include <cstdio> #include <cstring> #include <cm ...
- 集合框架学习笔记<二>
1.什么是ArrayList ArrayList就是传说中的动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了如下一些好处: 动态的增加和减少元素 实现了ICollection和ILis ...
- Unity键值(KeyCode)
Unity的Input管理 keyCode示例 keyCode Demo function OnGUI(){ var e:Event=Event.current; if(e.isKey){ Debug ...
- 查看mysqll账号信息
也可以删除,和操作其他普通表一样
- App_api设计
2014年,移动APP的热度丝毫没有减退,并没有像桌面软件被WEB网站那样所取代,不但如此,越来越多的传统应用.网站也都开始制作自己的移动APP,也就是我们常说的IOS客户端.android客户端.这 ...