题目大意:某大学有N个职员,编号为1~N。他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司。现在有个周年庆宴会,宴会每邀请来一个职员都会增加一定的快乐指数Ri,但如果某个职员的上司来参加舞会了,那么这个职员就不肯参加舞会了。求最大的快乐指数。

解题思路:经典的树形dp。我们设f[i][0]表示i参加时能获得的最大快乐指数,f[i][1]表示i不参加时能获得的最大快乐指数。

那么如果i参加,则他的下属一定不能参加,就在他参加获得的快乐指数上加上他所有下属不参加时的最大快乐指数(f[p][1],p是i的某个下属)

如果i不参加,他的下属可以参加也可以不参加,那么对于每个下属,我们把他参加和不参加时的快乐指数的较大值($max(f[p][1],f[p][0])$)加到f[i][1]中即可。

最后的答案为$max(f[root][1],f[root][0])$,root表示“校长”。

时间复杂度$O(n)$。

C++ Code:

#include<cstdio>
#include"cctype"
#include<vector>
using namespace std;
#define C c=getchar()
int boss[6050],a[6050],n,f[6050][2];
//f[i][0]表示i参加时能获得的最大快乐指数,f[i][1]表示i不参加时能获得的最大快乐指数。
vector<int> e[6050];
inline int readint(){
char C;
bool b=false;
while(!isdigit(c))b=c=='-',C;
int p=0;
while(isdigit(c))
p=(p<<3)+(p<<1)+c-'0',C;
if(b)p=-p;
return p;
}
void dp(int t){
f[t][0]=a[t];
f[t][1]=0;
for(int i=0;i<e[t].size();++i){
int to=e[t][i];
dp(to);
f[t][0]+=f[to][1];
f[t][1]+=(f[to][0]<f[to][1])?(f[to][1]):(f[to][0]);
}
}
int main(){
n=readint();
int x,y;
for(int i=1;i<=n;++i)a[i]=readint();
while((x=readint())&&(y=readint())){
boss[x]=y;
e[y].push_back(x);
}
for(int i=1;i<=n;++i)
if(!boss[i]){//寻找“校长”。
dp(i);
printf("%d\n",(f[i][0]<f[i][1])?f[i][1]:f[i][0]);
return 0;
}
}

[洛谷P1352][codevs1380]没有上司的舞会的更多相关文章

  1. 洛谷P1352 codevs1380 没有上司的舞会——S.B.S.

    没有上司的舞会  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond       题目描述 Description Ural大学有N个职员,编号为1~N.他们有 ...

  2. 【洛谷P1352】没有上司的舞会

    [洛谷P1352]没有上司的舞会 x舷售 锚」翅θ 但是 拙臃 蓄ⅶ榔 暄条熨卫 翘ヴ馇 表现无愧于雪月工作室的核心管理 爸惚扎掬 颇瓶 芟缆肝 貌痉了 洵┭笫装 嗝◇裴腋 褓劂埭 ...

  3. 洛谷1352 CODEVS1380 没有上司的舞会

    洛谷的测试数据貌似有问题,4个点RE不可避 CODEVS可AC —————— 10分钟后追记:在洛谷把数组范围开到10000+就过了 —————— 题目描述 Description Ural大学有N个 ...

  4. 题解【洛谷P1352】没有上司的舞会

    题面 题解 树形\(\text{DP}\)入门题. 我们设\(dp[i][0/1]\)表示第\(i\)个节点选\(/\)不选的最大快乐指数. 状态转移方程: \(dp[i][0]=a[i]+\sum_ ...

  5. 【洛谷 P1352】没有上司的舞会

    树形dp #include<cstdio> #include<cstring> #include<algorithm> using namespace std; ; ...

  6. [codevs1380]没有上司的舞会([BZOJ2060][Usaco2010 Nov]Visiting Cows 拜访奶牛)

    [codevs1380]没有上司的舞会 试题描述 Ural大学有N个职员,编号为1~N.他们有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司.每个职员有一个快乐指数.现 ...

  7. 洛谷 p1352 没有上司的舞会 题解

    P1352 没有上司的舞会 题目描述 某大学有N个职员,编号为1~N.他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司.现在有个周年庆宴会,宴会每邀请来一个职员 ...

  8. 洛谷P1352 没有上司的舞会——树形DP

    第一次自己写树形DP的题,发个博客纪念`- 题目来源:P1352 没有上司的舞会 题目描述 某大学有N个职员,编号为1~N.他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结 ...

  9. 洛谷P1352 没有上司的舞会 [2017年5月计划 清北学堂51精英班Day3]

    P1352 没有上司的舞会 题目描述 某大学有N个职员,编号为1~N.他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子 结点的直接上司.现在有个周年庆宴会,宴会每邀请来一个职 ...

随机推荐

  1. ZBrush中标准几何体与Polymesh

    通过对ZBrush的学习,相信您已经对这款软件有了一定的了解,文本我们主要学习ZBrush®的3D物体标准几何体的特性和使用方法.在ZBrush中只有Polymesh(多边形网格)物体才能使用雕刻笔刷 ...

  2. JS 有一张0.0001米的纸,对折多少次可以达到珠穆朗玛峰的高度8848;

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  3. java导出html页面

    http://blog.csdn.net/zhyh1986/article/details/8727523#t6 http://blog.csdn.net/zuozuofuwaiwai/article ...

  4. LayUI中select下拉框选中触发事件

    代码: var form = layui.form, layer = layui.layer; // 监听 $(document).ready(function() { // select下拉框选中触 ...

  5. JS 日历

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx. ...

  6. How Many Partitions Does An RDD Have

    From https://databricks.gitbooks.io/databricks-spark-knowledge-base/content/performance_optimization ...

  7. JavaScript:理解执行环境、作用域链和活动对象

    作用域的原理,对JS将如何解析标识符做出了解答.而作用域的形成与执行环境和活动对象紧密相关. 我们对于JS标识符解析的判断,存在一个常见误区 首先,看一个关于JS标识符解析的问题 ,源于风雪之隅提出的 ...

  8. vue 页面跳转及参数传递和接收

    跳转: this.$router.push({name: 'My',params:{ id:'1',name:'anson'}});   接收: {{this.$route.params.id}}

  9. 开放个人电脑端口[Windows]

    先打开控制面板

  10. Map的四种遍历方法

    1.取值遍历 for(String key:map.keySet()){ System.out.println("key="+key+"and value=" ...