题目:公司聚会
问题编号:252

题目描述
dd_engi所在的TIANYI公司要举办一次盛大的公司聚会。可惜的是,由于场地和花费的原因,不可能所有人都参加。现在的任务是拟定参加聚会人员的名单。
TIANYI公司的组织架构可以看做一棵有根多叉树。也就是说,在编号为1~N的所有N名员工中,除了最高管理者(编号为1)以外,每个员工都有且仅有一位直接上司;最高管理者则是这棵多叉树的“根”。这很好理解,对吗?另外,我们保证,员工的编号会大于他的直接上司的编号。
不同的员工对于聚会有着不同的要求,事实上,若邀请第i位员工(编号为i),在聚会中满足他的要求需要花费Ci元。另一方面,不同的员工在聚会中的“兴奋指数”也不同,第i位员工参加聚会的兴奋指数是Ei。
选择参加聚会的人员还有一个限制:为了使参加聚会的员工能够尽量放松,若邀请了某位员工,就不能邀请他的任何一位上司。这里“上司”的定义是这样的:最高管理者没有上司,其余所有员工的直接上司以及直接上司的所有上司都是他的上司。换句话说,某位员工的上司就是树中从他的节点走到根节点的路径上经过的所有节点(包括根结点,但不包括他自身)。
在满足上述限制的前提下,dd_engi希望参加聚会人员的兴奋指数之和最大,但同时他被告知,满足所有参加聚会人员的要求的总花费不得超过M元。那么,参加聚会人员的名单究竟应该怎样确定才最优呢?你需要求出的是最大的总兴奋指数。

数据范围
30%的数据满足N<=20。 100%的数据满足1 <= N <= 1024,0 <= M <= 109, 0 <= Ci <= 1024, -1024 <= Ei <= 1024。

输入格式 第一行,两个空格隔开的整数,N与M。 第二行,N-1个整数,分别是第2位至第N位员工的直接上司的编号。
第三行,N个整数,分别是C1、C2……CN。 第四行,N个整数,分别是E1、E2……EN。

输出格式 只需输出一行一个整数,即最大的总兴奋指数。

样例输入 10 100 1 2 2 1 4 3 5 6 1 12 53 127 32 164 22 199 10 19 17
-1 0 3 5 7 -2 9 6 8 13

样例输出 27

AC了,这次没有一次就AC,交了2次,第二次还被自己的对拍给误导了。Makedata写萎了。这道题怎么说呢?又是树形DP,其实我们考试过。可惜忘记了,现在弥补回来。上次做的时候没有转二叉树,不过我这次转了,继续我的记忆化搜索风格,先对二叉树的右儿子(即原树的兄弟)进行搜索,在对每一个孩子进行搜索。状态和方程:f[i][j]表示以i为根的子树中花费j的钱能够获得的最大兴奋值。转移是这样的:f[i][j]:=max{f[i][j],f[l[i]][k]+f[r[i]][j-k]};其中l[i],r[i]分别为i的左子树和右子树。贴一下代码:

Type int=longint;
Function search(I,j:int):int;
Var k:int;
BeginIf(i=0)thenexit(0);If(f[i][j]<100000000)then exit(f[i][j]);F[i][j]:=-maxlongint;If(j>=w[i])thenf[i][j]:=e[i]+search(r[i],j-w[i]);Fork:=0 to j do f[i][j]:=max(f[i][j],f[l[i]][k]+f[r[i]][j-k]);Exit(f[i][j]);
end;

预处理为:fillchar(f,sizeof(f),101);
最后只要输出:search(1,m);

RQNOJ252 公司聚会 题解。相关推荐

  1. ACM:计划一个公司聚会nbsp;(大一时头疼…

    计划一个公司聚会 问题描述: Stewart教授是一家公司总裁的顾问,这家公司正在计划一个公司的聚会.这个公司有一个层次式的结构:也就是,管理关系形成一颗以总裁为根的树.人事部门按每个员工喜欢聚会的程 ...

  2. 自动化测试学python_自动化生物学现已成为负担得起的现实

    自动化测试学python When the sun dips below the Pacific ocean, the white domes of Mount Wilson Observatory ...

  3. 狂赚 1200 亿,差点收购苹果,影响千万程序员,那个叫做太阳的公司却陨落了!...

    "当我们做对了,没有人会记得:当我们做错了,没有人会忘记!" 作者 | 云游小生 来源 | 纯洁的微笑(ID:keeppuresmile) 今年3月,一出超级大戏,将在美国高院上演 ...

  4. 狂赚1200亿,差点收购苹果,影响千万程序员,那个叫做太阳的公司却陨落了!...

    "当我们做对了,没有人会记得:当我们做错了,没有人会忘记!" 今年3月,一出超级大戏,将在美国高院上演--Oracle(甲骨文) 和Google(谷歌) 长达10年.索赔88亿美元 ...

  5. 动态规划_求最长公共子序列LCS

    学习动态规划有段时间了,我自己的感觉是看到题解很明白,但是拿到新题就后脑冒汗了,费解!我知道这其实是理解不深的缘故,动态规划是解决一类问题的方法,而不是解决某个问题的解法.今天我试着去感觉一下怎么去思 ...

  6. Python算法:动态规划

    本节主要结合一些经典的动规问题介绍动态规划的备忘录法和迭代法这两种实现方式,并对这两种方式进行对比 [这篇文章实际写作时间在这个系列文章之前,所以写作风格可能略有不同,嘿嘿] 大家都知道,动态规划算法 ...

  7. 程序员的恶性循环 !

    穷人的恶性循环: 穷 -> 需要努力工作 -> 没有时间去交际 -> 人脉越来越狭窄 -> 工作越来越难做 -> 越需要努力去工作 -> 越没有时间去发展人脉 -& ...

  8. 多决策决策树_授权员工决策时,意图就是一切

    多决策决策树 在日本的业务讨论中,一个词一次又一次出现:" gemba". 在为日本公司工作和生活的许多年中,我大概听过百万次" gemba de kimeru" ...

  9. 生活中有哪些行为是高情商的表现?

    一.遇见尴尬,装痴 假如一男士走错了房间,推门进去看见一女客一丝不挂地在沐浴,而她也看见男士了,这时候该怎么办?" 错误示范1:"说声'对不起',就关门退出." 错误示范 ...

最新文章

  1. 基于互联网云脑架构分析百度的现状与未来
  2. osgearth入门图解-用VC++做一个地球出来
  3. 拖放(Drag和Drop)--html5
  4. VTK:可视化算法之DataSetSurface
  5. .NET Core Tools转向使用MSBuild项目格式
  6. LeetCode 154 寻找旋转排序数组中的最小值 II
  7. java实现——客户端登录
  8. lua如何判断是否支持cookie_如何判断页面布局是否合理?
  9. linux英文包安装教程视频,Linux源码包安装过程讲解
  10. androidpn 推送初探
  11. mysql+服务+监控_mysql从服务器监控
  12. No qualifying bean of type;Unsatisfied dependency expressed through field 解决办法(总结全网)
  13. Centos系统新建文本文档.txt
  14. NXP iMX8 SCFW和Boot Container Image编译
  15. php txt bom,使用 PHP 函数或者软件去除文件的 BOM 头字符 - 文章教程
  16. 计算机算法专业英语,计算机算法英语常用术语
  17. 三连问:MySQL如何实现可重复读、又为什么会出现幻读、是否解决了幻读问题?...
  18. 17.JAVA对象的进阶
  19. 九宫八卦--易学基础
  20. 蓝以中老师《高等代数》第01章:代数学的经典课题,笔记

热门文章

  1. 电脑“C盘”快满了,怎么清理?
  2. X86_64(优麒麟)系统下构建 i386 文件系统并编译Box86运行wine
  3. host速度 mtk usb_mtk-usb代码分析之usb gadget
  4. IT人不可不知的10大男装品牌
  5. MapReduce计数器--详解
  6. 安装Google ChromeOS操作系统
  7. linux发布动态网站吗,博达网站群多机发布架构,Linux环境Webserver使用Nginx情况下,站点设置成动态发布的时候,前台访问首页报403错误的问题说明...
  8. Linux安装VNC远程桌面管理工具
  9. NovAtel GNSS接收机ProPak6 FTP数据下载操作教程
  10. KNN算法(K临近算法)及使用KNN算法实现手写数字0-9识别