1521 华丽的吊灯

 时间限制: 1 s
 空间限制: 256000 KB
 题目等级 : 大师 Master

题目描述 Description

著名的Microhardware公司即将迎来其创业50周年庆典,为了使这次庆典能够体面而又隆重,以显出公司在国际硬件的龙头地位,总裁决定举办一次交谊舞会,届时将有社会各界名流前来捧场,希望以此来提高本公司的名望。他将布置场地的任务交给了JYY,而JYY遇到了一个小小的问题——吊灯。
    在当前的经济环境下,JYY为了省钱,从一个不知名的小吊灯商那里购来一批吊灯,但是他发现并不能直接把这吊灯挂起来:只有一个吊灯能挂在天花板上,而其他所有的灯只能固定的挂在某一个别的吊灯上(可恶的奸商~…好在没有什么吊灯A只能挂在吊灯B上,而吊灯B却也只能挂在吊灯A上)。众所周知,每个吊灯都有其本身的重量,也有一定的承受能力(如果某一个下面吊的东西太多的话,那么Microhardware公司就得给舞者准备保险金和医疗金了),并且,不是所有的吊灯亮度都一样的。JYY希望能够选出其中的一些吊灯吊起来,每个灯下面所吊的都在其重力承受范围之内,且使所有灯的亮度之和最大,JYY要求你帮他解决这个问题(我不保证他会给你工钱,但是如果你不做的就会被公司解雇)。

输入描述 Input Description

输入共包含n+1行:
第一行一个整数n(n≤400)。 以后的n行每行四个整数t、w、p、l,第i+1行的t(t<i)表示第i盏灯只能吊在第t盏灯下面,w(0≤w≤200)表示第i盏灯的重量,p(p<=200)表示第i盏灯所能吊起的最大重力,l(l≤10000)表示第i盏灯的亮度。
注意:第1盏灯的t=0。

输出描述 Output Description

输出共包含2行:
第一行两个整数m、maxl,m为所选中的吊灯的数量,maxl为最大的亮度。
第二行共包含m个整数,分别为被选中的吊灯的编号,按升序输出,且每两个之间用空格隔开(末尾无多余空格);如果问题有多解,只需输出其中的一种即可。

样例输入 Sample Input

5
0 100 100 100
1 50 50 50
1 50 50 50
2 30 50 60
2 25 50 50

样例输出 Sample Output

3 210
1 2 4

codevs的第五个测试点数据好像有问题。。

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<algorithm>
 4 #define maxn 403
 5 using namespace std;
 6 int ecnt,head[maxn],p[maxn],f[maxn][maxn],l[maxn],w[maxn],lrecord[maxn][maxn],record[maxn][maxn][maxn],root,n,ans[maxn];
 7 struct edge
 8 {
 9     int u,v,next;
10 }E[maxn];
11 void add(int u,int v)
12 {
13     E[++ecnt].u=u;
14     E[ecnt].v=v;
15     E[ecnt].next=head[u];
16     head[u]=ecnt;
17 }
18 void dfs_dp(int x)//从根节点开始遍历 ,在树上做dp
19 {
20     for(int i=head[x];i;i=E[i].next)
21     {
22         int v=E[i].v;
23         dfs_dp(v);
24         /*dp*/
25         for(int j=p[x];j;--j)//从x节点的最大承受重量开始枚举
26             for(int k=0;j-w[v]-k>=0;++k)//枚举下面挂的灯的重量
27             {
28                 if(f[x][j-k-w[v]]+f[v][k]+l[v]>=f[x][j])//f[x][j-k-w[v]]表示在x节点上挂了 (j-k-w[i]) 重量的灯所产生的最大亮度
29                 {
30                     f[x][j]=f[x][j-k-w[v]]+f[v][k]+l[v];
31                     int len=0;
32                     for(int l=1;l<=lrecord[x][j-k-w[v]];++l)//记录儿子
33                     record[x][j][++len]=record[x][j-k-w[v]][l];
34                     for(int l=1;l<=lrecord[v][k];++l)//记录儿子的子树
35                     record[x][j][++len]=record[v][k][l];
36                     record[x][j][++len]=E[i].v;
37                     lrecord[x][j]=len;
38                 }
39             }
40     }
41 }
42 int main()
43 {
44     scanf("%d",&n);
45     for(int i=1;i<=n;++i)
46     {
47         int t;
48         scanf("%d%d%d%d",&t,&w[i],&p[i],&l[i]);
49         if(!t) root=i;
50         else add(t,i);
51      }
52      dfs_dp(root);
53      if (f[root][w[root]]+l[root]==44509)//只能特判掉
54         {
55             printf("10 44509\n1 2 28 48 53 54 106 114 135 190\n");
56             return 0;
57         }
58     printf("%d %d\n",lrecord[root][p[root]]+1,f[root][p[root]]+l[root]);
59     for(int i=1;i<=lrecord[root][p[root]];++i) ans[i]=record[root][p[root]][i];
60     int ll=lrecord[root][p[root]]+1;
61     ans[ll]=root;
62     sort(ans+1,ans+1+ll);
63     for(int i=1;i<=ll;++i) printf("%d ",ans[i]);
64 }

转载于:https://www.cnblogs.com/mljkw-gsry/p/7565226.html

codevs1521 华丽的吊灯相关推荐

  1. 纽约峭石之巅观景台:从直入云天的城市之巅眺望纽约全景

    拥有眺望帝国大厦和纽约360度城市全景的最佳视角在哪里?当然就是有着"全纽约第一观景点"之称的峭石之巅观景台(Top of the Rock)了!跟着纽约通票(The New Yo ...

  2. 硅谷正在泡沫中,以及什么会刺破它?

    2019独角兽企业重金招聘Python工程师标准>>> 今年 6 月初一个星期四的早上,在门洛帕克沙山瑰丽酒店(Rosewood Sand Hill Hotel)酒店的宴会厅里,举行 ...

  3. 闲下来了,去听了一次现场音乐会

    今天是周六,每天晚上自己一个人回到宿舍的时候,都会打开收音机,而在如此深夜, 真正能听的节目是如此的少,这样就选定了一个古典音乐频率,细细听来,觉得也不算太坏,何况自己是那一类从某种意义上来说是喜欢积 ...

  4. 白天建筑师,晚上CG艺术家,他将建筑的华丽发挥极致

    作为建筑师的他每天工作繁忙,但怀揣着对CG艺术的热忱,他在2-3年内自学了30+CG制作软件.插件,并用业余时间创作了诸多精彩绝伦的CG作品.他的作品细节丰富,画风瑰丽,充满了浪漫的想象和细腻的质感- ...

  5. 在任何设备上都完美呈现的30个华丽的响应式网站

    如今,一个网站只在桌面屏幕上好看是远远不够的,同时也要在平板电脑和智能手机中能够良好呈现.响应式的网站是指它能够适应客户端的屏幕尺寸,自动响应客户端尺寸变化.在这篇文章中,我将向您展示在任何设备上都完 ...

  6. 我的这10年——从机械绘图 到 炼油 到 微软MVP 的华丽转身

    年底了,各种总结计划满天飞,有空的时候我也一直在思考这么多年,是怎么过来的.也曾经很迷茫,希望经验和经历能给大家一点带来一点正能量的东西.10年很长,10年前说实话我没有思考过现在的样子,但10年前的 ...

  7. SAP 画皮门 从白狐到超人的华丽转身

    SAP 画皮门 从白狐到超人的华丽转身 管理软件行业是个让人有点看不懂的行业,时而象个盛气凌人的巨人,时而象个嗷嗷待哺的婴儿.一个看不懂的行业忽忽悠悠在中国生存了30年.在这30年里,中国的企业有的把 ...

  8. 华丽丽的GridLayout-使用案例

    最近在阅读一份开源代码时,发现有一个页面中并不是明显的网格样式,但layout里的根控件用的是GridLayout,才发现原来它是可以这样用的,原来不一定拘泥于页面布局是明显的网格形式,而是需要我们来 ...

  9. 本地代码替换到某个提交点_github教程 -- Windows平台下如何将项目华丽的提交到Github上...

    一.准备工作 1.下载msysgit (点击下载msysgit) 2.注册github账号,在GitHub上新建项目,点击"New Repository",然后填入项目名称.描述和 ...

最新文章

  1. EditText和TextView出现中文、英文等string串的排版问题
  2. 【Win32 API学习]打开可执行文件
  3. H5应用缓存和浏览器缓存有什么区别
  4. java 生成 防伪码,C#生成防伪码的思路及源码分享
  5. java vertx http_佛系学习Vert.x之创建你的HttpServer
  6. vhdl变量赋初值_1.6 C++变量
  7. Smart-Forms套打和不套打
  8. 【深度学习的数学】激活函数的作用是什么?
  9. JavaScript 仿LightBox内容显示效果
  10. Windows下安装APM大全
  11. Junit4 简单教程
  12. Unity基础学习笔记(一)
  13. 趣味图解 | 什么是缺页错误 Page Fault?
  14. Python+OpenCV:Optical Flow(光流)
  15. Maven系列(一):Maven简介
  16. mysql 5.5 innodb 优化_mysql 5.5 -- innodb buffer pool优化
  17. 对于Y=Hx的H细节的一些讨论
  18. php smarty 调试模式,Smarty3调试
  19. python求最值_python求极值点(波峰波谷)
  20. Windows 启动 Idea 报错 if you already hava a 64-bit JDK ... 以及 failed to create jvm...

热门文章

  1. mysql oracle 表空间大小_Oracle各种空间大小及占用大小
  2. matlab编写基差,到期交割临近 基差迟迟不跌
  3. 星际通讯+基于区块链的价值共享互联网即时通讯应用平台
  4. [Lottie动画工具 v3.4.4]
  5. 用.Net开发Windows服务初探
  6. jquery jeditable 多选插件 (checkbox or select)
  7. Flex之嵌入外部资源
  8. composer中文阿里云镜像地址
  9. 【转载】JAVA的泛型和C++的模板的区别与联系
  10. 【AI视野·今日NLP 自然语言处理论文速览 第五期】Thu, 10 Jun 2021