HDU - 1520 树形DP入门题
写了两种DP,第一种是按照自己习惯来xjb敲的,第二种参考别人
熟悉一下树形DP的套路
dp[i][]是维护i及以下的关系最优值的,所以我觉得两次DP记忆搜索之间不清-1应该是正确的(也就做了一次加法)
#include<bits/stdc++.h>
#define rep(i,j,k) for(register int i=j;i<=k;i++)
#define rrep(i,j,k) for(register int i=j;i>=k;i--)
using namespace std;
typedef long long ll;
const int maxn = 2e5+11;
int dp[maxn][2];
int w[maxn];
bool flag[maxn];
int to[maxn<<1],nxt[maxn<<1],head[maxn],tot;
void init(){memset(head,-1,sizeof head);tot=0;}
void add(int u,int v){
to[tot]=v;nxt[tot]=head[u];
head[u]=tot++;
}
int DP(int u,int now){
if(~dp[u][now]) return dp[u][now];
int ans=now?w[u]:0;
for(int i = head[u]; ~i; i = nxt[i]){
int v=to[i];
if(now==0) ans+=max(max(DP(v,now),DP(v,now^1)),0);
else ans+=max(0,DP(v,now^1));
}
return dp[u][now]=ans;
}
int DP(int u){
dp[u][0]=0;
dp[u][1]=w[u];
for(int i = head[u]; ~i; i = nxt[i]){
int v=to[i];
DP(v);
dp[u][0]+=max(dp[v][0],dp[v][1]);
dp[u][1]+=dp[v][0];
}
return max(dp[u][0],dp[u][1]);
}
int main(){
int n,u,v,rt;
while(scanf("%d",&n)!=EOF){
init();memset(flag,0,sizeof flag);
rep(i,1,n) scanf("%d",&w[i]);
while(scanf("%d%d",&u,&v)!=EOF){
if(u*v==0)break;
add(v,u);flag[u]=1;
}
rep(i,1,n) if(!flag[i]){
rt=i;
break;
}
memset(dp,-1,sizeof dp);
printf("%d\n",max(DP(rt,0),DP(rt,1)));
}
return 0;
}
HDU - 1520 树形DP入门题的更多相关文章
- HDU 1520 树形DP入门
HDU 1520 [题目链接]HDU 1520 [题目类型]树形DP &题意: 某公司要举办一次晚会,但是为了使得晚会的气氛更加活跃,每个参加晚会的人都不希望在晚会中见到他的直接上司,现在已知 ...
- HDU 1520 树形dp裸题
1.HDU 1520 Anniversary party 2.总结:第一道树形dp,有点纠结 题意:公司聚会,员工与直接上司不能同时来,求最大权值和 #include<iostream> ...
- (树形DP入门题)Anniversary party(没有上司的舞会) HDU - 1520
题意: 有个公司要举行一场晚会.为了让到会的每个人不受他的直接上司约束而能玩得开心,公司领导决定:如果邀请了某个人,那么一定不会再邀请他的直接的上司,但该人的上司的上司,上司的上司的上司等都可以邀请. ...
- POJ 2342 树形DP入门题
有一个大学的庆典晚会,想邀请一些在大学任职的人来參加,每一个人有自己的搞笑值,可是如今遇到一个问题就是假设两个人之间有直接的上下级关系,那么他们中仅仅能有一个来參加,求请来一部分人之后,搞笑值的最大是 ...
- hdu_Anniversary party_(树形DP入门题)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1520 题意:有N个人,N-1个人有自己的上司,每个人有一个快乐值,如果这个人参加了聚会,那么这个人的直 ...
- HDU 1561 树形DP入门
The more, The Better Time Limit: 6000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- codevs 1380/HDU 1520 树形dp
1380 没有上司的舞会 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 回到问题 题目描述 Description Ural大学有N个职员 ...
- hdu 1520 (树形DP)
dp[i][0]表示i不参加 dp[i][1]表示i参加 简单的树形dp #include<stdio.h> #include<string.h> #define N 6100 ...
- hdu 1520 树形DP基础
http://acm.hdu.edu.cn/showproblem.php?pid=1520 父节点和子节点不能同时选. http://blog.csdn.net/woshi250hua/articl ...
随机推荐
- jsp Ajax请求(返回xml数据类型)
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...
- ubuntu opencv的使用
博客转载自:https://blog.csdn.net/u012816621/article/details/51732932 CMakeLists.txt # cmake needs this li ...
- WIN XP蓝屏代码大全
转自:廊坊师范学院信息技术提高班---韩正阳 http://blog.csdn.net/jiudihanbing WIN XP蓝屏代码大全WIN XP蓝屏代码大全一.蓝屏含义 1.故障检查信息 *** ...
- Asp.net WebPages框架运行原理浅析
[来源] 达内 [编辑] 达内 [时间]2012-09-14 在Asp.net4和4.5中,新增了WebPages Framework,编写页面代码使用了新的Razor语法,代码更加的简洁和 ...
- spring的介绍
Spring是什么: Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用!!! Spring是一个轻量级的控制反转(Io ...
- React + Python 七月小说网 启程(一)
一.为啥要做这个网站 很久没有写技术相关的博客了,最近几个月忙飞,各种工作,技术根本学不完,很难受. 趁着春节期间,终于有空闲时间做自己爱做的事情了,美滋滋. 热爱技术,热爱小说,于是诞生了个这么玩意 ...
- vs2017安装后自动应用许可证
Vs2017专业版 "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\StorePI ...
- docker run hello-world失败
提示镜像拉取失败,解决方案 到 https://cr.console.aliyun.com/ 注册一个账户 列表中就有 加速器 启动 Docker 端 右键 选择配置 在Docker Dae ...
- CentOS7 搭建 python pypi 私有源
(1)寻找可用的同步源,我选择的是中科大的源:http://rsync.mirrors.ustc.edu.cn (2)创建数据同步目录:/root/pypi(如果想存放到其他目录,可以通过软链接的方式 ...
- day8学python 各种简单模板
各种简单模板 内容: 1.shelve模板 存储数据 2.shutil 模板 用作拷贝/删除/压缩文件(使用便捷) 3.hashlib 模板 加密文件 4.re模板 ================= ...