hdoj1520(入门树形dp)
题目链接:https://vjudge.net/problem/HDU-1520
题意:和luogu那道没有上司的舞会一样的题,给定一棵带点权的树,父结点和子结点不能同时选,问怎么选使得权值和最大,求最大值即可。
思路:最近开始肝树形dp,从入门题开始QAQ,加油!
用dp[u][0]表示结点u不选,dp[u][1]表示选,vi是结点u的子结点,那么:
dp[u][0]=sum(max(dp[vi][0],dp[vi][1]))
dp[u][1]=val[u]+sum(dp[vi][0])
一次dfs就ok了,结果为max(dp[root][0],dp[root][1]),root要自己找。
AC代码:
#include<cstdio>
#include<algorithm>
using namespace std; const int maxn=;
int n,cnt,head[maxn],val[maxn],indeg[maxn],dp[maxn][];
struct node{
int v,nex;
}edge[maxn]; void adde(int u,int v){
edge[++cnt].v=v;
edge[cnt].nex=head[u];
head[u]=cnt;
} void dfs(int u){
dp[u][]=val[u];
for(int i=head[u];i;i=edge[i].nex){
int v=edge[i].v;
dfs(v);
dp[u][]+=max(dp[v][],dp[v][]);
dp[u][]+=dp[v][];
}
} int main(){
while(~scanf("%d",&n)){
cnt=;
for(int i=;i<=n;++i){
scanf("%d",&val[i]);
head[i]=,indeg[i]=,dp[i][]=;
}
int a,b;
while(scanf("%d%d",&a,&b),a&&b){
indeg[a]=;
adde(b,a);
}
int root;
for(int i=;i<=n;++i)
if(!indeg[i]){
root=i;
break;
}
dfs(root);
printf("%d\n",max(dp[root][],dp[root][]));
}
return ;
}
hdoj1520(入门树形dp)的更多相关文章
- 【POJ 2342】Anniversary party(入门树形dp)
dp[i][0..1]表示i不来/来参加的最大总高兴值. 则dp[i][1]+=dp[v][0](v是i的所有直接下属) dp[i][0]+=max(dp[v][0],dp[v][1]) 没有告诉你树 ...
- hdu 1520 Anniversary party(入门树形DP)
Anniversary party Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6926 Accepted: 3985 ...
- 树形DP入门学习
这里是学习韦神的6道入门树形dp进行入门,本来应放在day12&&13里,但感觉这个应该单独放出来好点. 这里大部分题目都是参考的韦神的思想. A - Anniversary part ...
- POJ 2342 树形DP入门题
有一个大学的庆典晚会,想邀请一些在大学任职的人来參加,每一个人有自己的搞笑值,可是如今遇到一个问题就是假设两个人之间有直接的上下级关系,那么他们中仅仅能有一个来參加,求请来一部分人之后,搞笑值的最大是 ...
- hdu_Anniversary party_(树形DP入门题)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1520 题意:有N个人,N-1个人有自己的上司,每个人有一个快乐值,如果这个人参加了聚会,那么这个人的直 ...
- 树形dp 入门
今天学了树形dp,发现树形dp就是入门难一些,于是好心的我便立志要发一篇树形dp入门的博客了. 树形dp的概念什么的,相信大家都已经明白,这里就不再多说.直接上例题. 一.常规树形DP P1352 没 ...
- 树形动态规划(树形DP)入门问题—初探 & 训练
树形DP入门 poj 2342 Anniversary party 先来个题入门一下~ 题意: 某公司要举办一次晚会,但是为了使得晚会的气氛更加活跃,每个参加晚会的人都不希望在晚会中见到他的直接上 ...
- 树形DP入门详解+题目推荐
树形DP.这是个什么东西?为什么叫这个名字?跟其他DP有什么区别? 相信很多初学者在刚刚接触一种新思想的时候都会有这种问题. 没错,树形DP准确的说是一种DP的思想,将DP建立在树状结构的基础上. 既 ...
- [poj2342]Anniversary party树形dp入门
题意:选出不含直接上下司关系的最大价值. 解题关键:树形dp入门题,注意怎么找出根节点,运用了并查集的思想. 转移方程:dp[i][1]+=dp[j][0];/i是j的子树 dp[i][0]+=max ...
随机推荐
- 2017.9.23 NOIP2017 金秋杯系列模拟赛 day1 T1
回形遍历( calc .cpp/c/pas) 时间限制:1s内存 限制: 256MB [问题 描 述] 给出一个 n*m 的棋盘,按如下方式遍历,请问(x,y)往后 z 步走到的是哪个格子. [输入] ...
- 【CUDA 基础】6.5 流回调
title: [CUDA 基础]6.5 流回调 categories: - CUDA - Freshman tags: - 流回调 toc: true date: 2018-06-20 21:56:1 ...
- P4779 【模板】单源最短路径(标准版)题解
原题链接 https://www.luogu.org/problemnew/show/P4779 若还未食用弱化版的同学请先做这个qwq https://www.luogu.org/problemne ...
- 最远 Manhattan 距离
最远 Manhattan 距离 处理问题 K维空间下的n个点,求两点最远曼哈顿距离 思路 以二维为例介绍算法思想,即可类推到k维.对于P,Q两点,曼哈顿距离|Px-Qx|+|Py-Qy|可看作(±Px ...
- javaweb和数据库的简易商城系统
这是一个基于Javaweb和数据库的简易商城系统.为大二夏季小学期完成. 目录结构 主要功能截图为: 一.购买用户 1.首页(除此界面其余界面访问需要登录才能进入) 查看商品 添加购物车 查看购物车 ...
- Ubuntu18.04 server安装步骤
Ubuntu18.04 server安装步骤 1. select a language default 2. select your location default 3. configure th ...
- Beta冲刺(1/4)
队名:福大帮 组长博客链接: https://www.cnblogs.com/mhq-mhq/p/11990568.html 作业博客 : https://edu.cnblogs.com/campus ...
- psql物化视图自动更新
更新物化视图示例 CREATE TABLE model.test ( id SERIAL PRIMARY KEY, name VARCHAR(60)); . 创建物化视图 CREATE MATERIA ...
- 在debian下安装QT 5.10 32位
准备工作: 在开始之前最好把GCC升级到5.0以上. 如果升级后出现“libstdc++.so.6: version `CXXABI_1.3.9' not found”错误,可以参考https://b ...
- PHP-生产随机验证码图片
// <span style="white-space:pre"> </span>//因为要把产生的验证码保存到session中,此处为session开始 ...