LuoGu P1352 没有上司的舞会
题目传送门
这可能是最简单的树形Dp了吧
对于每个人,要么他来,他的下属不来
要么他不来,他的下属爱来不来
于是设计状态:
f[i][0/1]表示以i为根的子树中最大能达到的快乐值(i这个人选或者不选)
然后一遍dfs一遍转移就好了
#include <iostream>
#include <cstdlib>
#include <cstdio>
#define max(a,b) (a>b?a:b)
using namespace std;
const int N=6e3+5;
struct edge{
int to,next,pre;
}e[N];
int f[N][2],n,val[N],u,v,head[N],tot,ans=0;
bool had[N];
inline void build(int u,int v){
e[++tot].next=head[u];e[tot].pre=u;
head[u]=tot;e[tot].to=v;
return ;
}
inline void work(int x){
f[x][0]=0;f[x][1]=val[x];
for(int i=head[x];i;i=e[i].next){
int k=e[i].to;
work(k);
f[x][0]+=max(f[k][1],f[k][0]);
f[x][1]+=f[k][0];
}
return ;
}
int main(){
scanf("%d",&n);
for(register int i=1;i<=n;++i) scanf("%d",&val[i]);
do{
scanf("%d%d",&u,&v);
build(v,u);had[u]=true;
}while(u!=0&&v!=0);
for(int i=1;i<=n;++i) if(!had[i]) work(i);
for(register int i=1;i<=n;++i) ans=max(ans,max(f[i][1],f[i][0]));
printf("%d\n",ans);
return 0;
}
LuoGu P1352 没有上司的舞会的更多相关文章
- luogu P1352 没有上司的舞会 x
P1352 没有上司的舞会 题目描述 某大学有N个职员,编号为1~N.他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司.现在有个周年庆宴会,宴会每邀请来一个职员 ...
- [luogu]P1352 没有上司的舞会[树形DP]
本Lowbee第一次写树形DP啊,弱...一个变量写错半天没看出来...... 题目描述 某大学有N个职员,编号为1~N.他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点 ...
- 洛谷 p1352 没有上司的舞会 题解
P1352 没有上司的舞会 题目描述 某大学有N个职员,编号为1~N.他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司.现在有个周年庆宴会,宴会每邀请来一个职员 ...
- 洛谷P1352 没有上司的舞会——树形DP
第一次自己写树形DP的题,发个博客纪念`- 题目来源:P1352 没有上司的舞会 题目描述 某大学有N个职员,编号为1~N.他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结 ...
- P1352 没有上司的舞会——树形DP入门
P1352 没有上司的舞会 题目描述 某大学有N个职员,编号为1~N.他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司.现在有个周年庆宴会,宴会每邀请来一个职员 ...
- 洛谷P1352 没有上司的舞会 [2017年5月计划 清北学堂51精英班Day3]
P1352 没有上司的舞会 题目描述 某大学有N个职员,编号为1~N.他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子 结点的直接上司.现在有个周年庆宴会,宴会每邀请来一个职 ...
- 【Luogu】P1352没有上司的舞会(树形DP)
题目链接 设f[i][0]表示第i个人不去舞会时子树的最大欢乐度,f[i][1]表示第i个人去舞会时子树的最大欢乐度. 则有状态转移方程:f[i][0]+=∑max(f[to][0],f[to][1] ...
- P1352 没有上司的舞会&&树形DP入门
https://www.luogu.com.cn/problem/P1352 题目描述 某大学有N个职员,编号为1~N.他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的 ...
- 洛谷——P1352 没有上司的舞会
https://www.luogu.org/problem/show?pid=1352#sub 题目描述 某大学有N个职员,编号为1~N.他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树, ...
随机推荐
- GCC编译器原理(三)------编译原理三:编译过程---预处理
Gcc的编译流程分为了四个步骤: 预处理,生成预编译文件(.文件):gcc –E hello.c –o hello.i 编译,生成汇编代码(.s文件):gcc –S hello.i –o hello. ...
- (13)UniquePathIII
一.问题描述 给定一个二维数组. 数组只有一个元素是1,是起点 数组只有一个元素是2,是终点 数组中的0是必须经过的地方 数组中的-1是障碍不可通过 从起始点到终点一共有多少路径? 二.思路 DFS ...
- Kaldi的交叉熵正则化
xent_regularize, Cross Entropy Regularize nnet3/nnet-discriminative-trainning.cc:109 void NnetDiscri ...
- 快速安装nginx
1.创建nignx用户 /usr/sbin/groupadd -f nginx /usr/sbin/useradd -g nginx nginx 2.安装依赖 yum install gcc gcc- ...
- python学习-Day1-接口测试
学习内容:接口测试 学习方式: 通过工具测试http接口 工具:postman + jmeter 基础知识 一. 接口调用测试:接口请求报文拼接 1. 问号前是url,后面是参数名和参数值,多个参数用 ...
- 事件对象event
每个事件都有默认事件event对象 e.target 事件目标对象 e.keycode 键码 e.stopPropogation();//阻止默认事件
- 源码学习之mybatis
1.先看看俩种调用方式 public static void main(String[] args) { SqlSessionFactory sqlSessionFactory; SqlSession ...
- Django学习手册 - ORM 单表数据获取
Django 单表数据的获取: 先建立数据表格 from django.db import models # Create your models here. class userinfo(model ...
- Microsoft SQL - 操作语句
操作语句(Operation Statement) 操作数据库 创建数据库 关键字:create database 用于创建各种数据库对象(数据库.表.触发器.存储过程等) 格式如:create &l ...
- MySql cmd下的学习笔记 —— 有关建立表的操作(有关于数据类型)
(01)建表的过程实际上是 声明字段 的过程 一. 列类型(字段): 存储同样的数据时,不同的列类型,所占据的空间和效率是不一样的,这就是建表时要考虑的意义. 二.MySQL三大列类型 数值型 ...