Description

网上出现了一种高科技产品——人品测试器。只要你把你的真实姓名输入进去,系统将自动输出你的人品指数。yzx不相信自己的人品为0。经过了许多研究后,yzx得出了一个更为科学的人品计算方法。这种方法的理论依据是一个非常重要的结论:人品具有遗传性。因此,一个人的人品完全由他的祖先决定。yzx提出的人品计算方法相当简单,只需要将测试对象的k个祖先的人品指数(可能为负数)加起来即可。选择哪k个祖先可以由测试者自己决定,但必须要满足这个要求:如果除自己的父母之外的某个祖先被选了,那么他的下一代必需要选(不允许跳过某一代选择更远的祖先,否则将失去遗传的意义)。
非常不幸的是,yzx测试了若干次,他的人品值仍然不能为一个正数。现在yzx需要你帮助他找到选择祖先的最优方案,使得他的人品值最大。

Input

第一行是两个用空格隔开的正整数n和k,其中n代表yzx已知的家谱中共有多少人(包括yzx本身在内),k的意义参见问题描述。
第二行有n-1个用空格隔开的整数(可能为负),这些数的绝对值在2^15以内。其中,第i个数表示编号为i+1的人的人品值。我们规定,编号为1的人是yzx。
接下来n行每行有两个用空格隔开的数,其中第i行的两个数分别表示第i个人的父亲和母亲的编号。如果某个人的父亲或母亲不在这个家谱内,则在表示他的父亲或母亲的编号时用0代替。
除yzx以外的所有人都是yzx的祖先,他们都会作为父亲或母亲被描述到。每个人都不可能同时作为多个人的父亲或者是母亲。

Output

一个整数,表示yzx能够得到的最大人品值。

Sample Input

6 3
-2 3 -2 3 -1
2 3
4 5
0 6
0 0
0 0
0 0

Sample Output

4
样例说明下图显示了输入样例所描述的家谱图。括号里的数表示的是该人的人品值。4(-2)  5(3)  6(-1)\   /     /\ /     /2(-2)   3(3)\   /\ /1 <---yzx显然,选择祖先2、3、5能使yzx的人品值达到最大。这个最大值为4,表示yzx能够得到的最大人品值。

Data Constraint

50%的数据,n<=10。
100%的数据,n<=100。

Solution

树形DP。

设f[i][j]表示到点i,选了j个点的最大人品值。

f [ i ] [ j ] = max{ f [ lson ] [ l ]+ f [ rson ] [ j - l ] }( 0=< l < k )

Code

#include<cstdio>
#include<cstring>
#include<algorithm>
#define N 110
using namespace std;
int n,k,a[N],l[N],r[N],f[N][N],inf;
void dg(int x){f[x][1]=a[x];if(l[x]) dg(l[x]);if(r[x]) dg(r[x]);for(int i=2;i<=k+1;i++){for(int j=0;j<=i-1;j++){if(f[l[x]][j]!=inf&&f[r[x]][i-j-1]!=inf) f[x][i]=max(f[x][i],a[x]+f[l[x]][j]+f[r[x]][i-j-1]);}}
}
int main(){scanf("%d%d",&n,&k);for(int i=2;i<=n;i++) scanf("%d",&a[i]);memset(f,129,sizeof(f));inf=f[0][0];for(int i=1;i<=n;i++){scanf("%d%d",&l[i],&r[i]);f[i][0]=0;}f[0][0]=0;dg(1);printf("%d\n",f[1][k+1]);return 0;
}


作者:zsjzliziyang 
QQ:1634151125 
转载及修改请注明 
本文地址:https://blog.csdn.net/zsjzliziyang/article/details/86629036

3914. 【NOIP2014模拟11.2B组】人品问题相关推荐

  1. 【NOIP2014模拟11.2B组】人品问题

    Description 网上出现了一种高科技产品--人品测试器.只要你把你的真实姓名输入进去,系统将自动输出你的人品指数.yzx不相信自己的人品为0.经过了许多研究后,yzx得出了一个更为科学的人品计 ...

  2. 【NOIP2014模拟11.2B组】超氧化钾

    非常sb的一道题~比赛切掉的我~ Description 作为一个化学小考只有77分的同学,小W感觉很有压力,所以他决定搞化学.今天他开始研究超氧化钾,这是一种很神奇的离子化合物,在高温下空间结构是立 ...

  3. JZOJ 3912. 【NOIP2014模拟11.2B组】超氧化钾

    Are you ready? 题目: 题意: 分析: 代码: 题目: 传送门 题意: 给定你xxx.yyy,求按照题目给出的z=xz=xz=x modmodmod 1+x1+x1+x modmodmo ...

  4. 3912. 【NOIP2014模拟11.2B组】超氧化钾

    Description 作为一个化学小考只有77分的同学,小W感觉很有压力,所以他决定搞化学.今天他开始研究超氧化钾,这是一种很神奇的离子化合物,在高温下空间结构是立方体,如下图所示.有一天教黄交给了 ...

  5. 3913. 【NOIP2014模拟11.2B组】艰难的选择

    Description Yzx已经当过多次"媒人"了.他因此获得了许多经验.例如,距Yzx观察,身高相近的人似乎比较合得来. Yzx在学校策划了一次大型的"非常男女&qu ...

  6. jzoj2702. 探险jzoj3917. 【NOIP2014模拟11.2A组】福慧双修

    Description 探险家小T好高兴!X国要举办一次溶洞探险比赛,获奖者将得到丰厚奖品哦!小T虽然对奖品不感兴趣,但是这个大振名声的机会当然不能错过! 比赛即将开始,工作人员说明了这次比赛的规则: ...

  7. 3917 【NOIP2014模拟11.2A组】福慧双修 (Standard IO)题解

    目录 目录 原题 Description Input Output Sample Input Sample Output Data Constraint 题解 40分 100分 模型转换 做法 I I ...

  8. 【NOIP2014模拟11.2A组】福慧双修

    题意 给定一个图,要我们从1号点出发,经过一系列点后重新回到1点,求出最短距离是多少,限制是每条边只能通过一次. 分析 对于这种求最短路径的题,我们一开始当然是想到SPFA,DIJ等一些列的求最短路算 ...

  9. 【NOIP2014模拟11.1B组】吴传之火烧连营(tree)

    题目大意 对于一个序列,多次询问求在 xor K 的情况下最大值. 分析 我们将每一个数拆分成 2 进制,然后映射进一棵 trie 中,然后对于每个询问,根据异或的性质(1 xor 1=0,1 xor ...

最新文章

  1. 虚拟机cenos 重置密码
  2. pytorch中tensor的unsqueeze()函数和squeeze()函数的用处
  3. 求栈中元素个数算法_每日算法系列【LeetCode 315】计算右侧小于当前元素的个数...
  4. 各浏览器内核与C#WinForm开发Demo
  5. php 中set是什么_php中set
  6. 1.7 空间正交分解
  7. 复试计算机网络与软件工程,2018华南理工大学软件工程复试经验贴
  8. 如何利用.NET Core搭建跨平台的控制台应用程序
  9. “左手5G右手AI”,任正非推崇的王喜文在华为这样说
  10. python字符串编码_Python字符串编码答疑
  11. python函数参数定义顺序_18 Python - 函数定义与参数
  12. C++两个函数可以相互递归吗_通俗讲:数据结构递归思想
  13. 正则表达式 - php正则匹配内容?
  14. 给用户配置hadoop权限
  15. 演化博弈论----gyy参考总结
  16. qq音乐网络异常获取音乐失败_qq音乐网络异常获取音频失败怎么办
  17. 微信公众号插入公式介绍
  18. idea文档注释的快捷键带参数
  19. ES5和ES6的继承有哪些优劣?
  20. Oracle sql创建序列sequence

热门文章

  1. Problem A: 让动物们叫起来吧!
  2. Photoshop纹理制作——毛发纹理
  3. 【Java】招聘网站
  4. 2020版java学习线路图(内附资源)
  5. 为什么H5是黑灰产高发区?一文说明白
  6. 自动驾驶数据采集和分析平台--ADAS Logger
  7. 电脑共享怎么换其他用户登录到这台计算机,怎样切换电脑的用户名登陆?
  8. Jetty篇一之初识Jetty
  9. unity实现图片轮播效果_unity 背景无限循环滚动效果
  10. 静态小米官网主页html5设计,web案例-css制作小米官网产品展示