本Lowbee第一次写树形DP啊,弱...一个变量写错半天没看出来......

题目描述

某大学有N个职员,编号为1~N。他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司。现在有个周年庆宴会,宴会每邀请来一个职员都会增加一定的快乐指数Ri,但是呢,如果某个职员的上司来参加舞会了,那么这个职员就无论如何也不肯来参加舞会了。所以,请你编程计算,邀请哪些职员可以使快乐指数最大,求最大的快乐指数。

输入输出格式

输入格式:

第一行一个整数N。(1<=N<=6000)

接下来N行,第i+1行表示i号职员的快乐指数Ri。(-128<=Ri<=127)

接下来N-1行,每行输入一对整数L,K。表示K是L的直接上司。

最后一行输入0 0

输出格式:

输出最大的快乐指数。

输入输出样例

  1. 输入样例#1
  1. 7
  2. 1
  3. 1
  4. 1
  5. 1
  6. 1
  7. 1
  8. 1
  9. 1 3
  10. 2 3
  11. 6 4
  12. 7 4
  13. 4 5
  14. 3 5
  15. 0 0
  1. 输出样例#1
  2.  
  3. 5
  1.   这是一道非常水入门的题目,其实这些大佬们构成了一棵树,然而大佬们不愿意与其上司一起参加舞会因为会自卑比较任性...那么我们很容易想到以i作为根节点的子树的最大收益(容许我这么说把...)然后我们很容易发现在转移的时候会有问题,大佬上司不能和小弟下级一起出现啊!!!怎么办?很简单啊,多添一个状态表示其有没有参加不就得了?I  所以我们得到方程:dp[i][1]=Σ dp[j][0]+hp[i] (快乐指数...)dp[i][0]=Σ Maxdp[j][0],dp[j][1]) [ji的儿子节点]  是不是很水?  但是Lowbee我的代码还是一塌糊涂...
  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. inline int read();
  5. using namespace std;
  6. #define maxn 6010
  7. struct edge{
  8. int to;
  9. int next;
  10. }e[maxn*];
  11. ],hp[maxn],fa[maxn];
  12. ,n;
  13. //特殊嗜好???
  14. namespace lys{
  15. //不解释了把...
  16. int Max(int x,int y){
  17. return x>y?x:y;
  18. }
  19. //邻接表存图
  20. void add(int x,int y){
  21. e[cnt].to=x;e[cnt].next=pre[y];pre[y]=cnt++;
  22. fa[x]=y;
  23. }
  24. //dfs dp主体...
  25. void dfs(int x){
  26. int i,v;
  27. //初始化...
  28. dp[x][]=hp[x];
  29. for(i=pre[x];~i;i=e[i].next){
  30. v=e[i].to;
  31. dfs(v);
  32. //方程转移
  33. dp[x][]+=Max(dp[v][],dp[v][]);
  34. dp[x][]+=dp[v][];
  35. }
  36. }
  37. int ans;
  38. int main(){
  39. n=read();
  40. int i,x,y;
  41. ;i<=n;i++) hp[i]=read();
  42. memset(pre,-,sizeof pre);
  43. memset(fa,-,sizeof fa);
  44. while(true){
  45. x=read(); y=read();
  46. &&y==) break ;
  47. add(x,y);
  48. }
  49. ;i<=n;i++){
  50. ){
  51. //蒟蒻搜索
  52. dfs(i);
  53. printf(],dp[i][]));
  54. ;
  55. }
  56. }
  57. }
  58. }
  59. int main(){
  60. lys::main();
  61. ;
  62. }
  63. //Lowbee的垃圾快读
  64. inline int read(){
  65. ,f=;
  66. char c=getchar();
  67. '){
  68. if(c=='-')
  69. f=-;
  70. c=getchar();
  71. }
  72. '){
  73. k=k*+c-';
  74. c=getchar();
  75. }
  76. return k*f;
  77. }
  1.  
  1.  

[luogu]P1352 没有上司的舞会[树形DP]的更多相关文章

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

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

  2. P1352 没有上司的舞会——树形DP入门

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

  3. P1352 没有上司的舞会&&树形DP入门

    https://www.luogu.com.cn/problem/P1352 题目描述 某大学有N个职员,编号为1~N.他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的 ...

  4. 洛谷 P1352 没有上司的舞会 树形DP板子

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

  5. P1352 没有上司的舞会[树形dp]

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

  6. 洛谷 P1352 没有上司的舞会(树形 DP)

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

  7. luogu P1352 没有上司的舞会 x

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

  8. 『没有上司的舞会 树形DP』

    树形DP入门 有些时候,我们需要在树形结构上进行动态规划来求解最优解. 例如,给定一颗\(N\)个节点的树(通常是无根树,即有\(N-1\)条无向边),我们可以选择任意节点作为根节点从而定义出每一颗子 ...

  9. CodeVS1380 没有上司的舞会 [树形DP]

    题目传送门 没有上司的舞会 题目描述 Description Ural大学有N个职员,编号为1~N.他们有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司.每个职员有一个 ...

随机推荐

  1. [BZOJ1597]土地购买

    Description 农夫John准备扩大他的农场,他正在考虑N (1 <= N <= 50,000) 块长方形的土地. 每块土地的长宽满足(1 <= 宽 <= 1,000, ...

  2. php的数据访问和封装运用

    php数据访问: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://ww ...

  3. JDK和Tomcat的简单配置(菜鸟巧记一)

    JDK和Tomcat的配置 1.先好安装JDK 1.1先到oracle官网下载合适自己的JDK 地址http://www.oracle.com/technetwork/java/javase/down ...

  4. python基础之数据类型/字符串/元组/列表/字典

    Python 数据类型 数字类型: int整型,long 长整型(在python3.0里不区分整型和长整型).float浮点型:complex复数(python中存在小数字池:-5--257):布尔值 ...

  5. ReactiveCocoa源码解析(二) Bag容器的代码实现

    今天博客我接着上篇博客的内容来,上篇博客我们详细的看了ReactiveSwift中的Observer已经Event的代码实现.接下来我们来看一下ReactiveSwift中的结构体Bag的实现.Bag ...

  6. js中的数组对象排序(方法sort()详细介绍)

    定义和用法 sort() 方法用于对数组的元素进行排序. 语法    arrayObject.sort(sortby) 参数sortby:可选.规定排序顺序.必须是函数. 返回值 对数组的引用.请注意 ...

  7. 常用html标签的只读写法

    <a href="baidu.com" onclick="event.returnValue=false;">百度</a> a链接的只读 ...

  8. Python对数据库的增删改查

    #!/usr/bin/env python   import MySQLdb   DATABASE_NAME = 'hero'   class HeroDB:     # init class and ...

  9. Ionic 应用图标,信息修改

    Ionic 应用图标,信息修改 Ionic 应用图标 修改 准备好替换的图标并生成各个尺寸的图标 1.使用命令行进入项目根目录,执行命令ionic resources 替换的图片放在resources ...

  10. Azure SQL Database (23) Azure SQL Database Dynamic Data Masking动态数据掩码

    <Windows Azure Platform 系列文章目录> 我们在使用关系型数据的时候,有时候希望: - 管理员admin,可以查看到所有的数据 - 普通用户,某些敏感字段,比如信用卡 ...