毕业bg
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 6346 Accepted Submission(s): 2370

Problem Description
每年毕业的季节都会有大量毕业生发起狂欢,好朋友们相约吃散伙饭,网络上称为“bg”。参加不同团体的bg会有不同的感觉,我们可以用一个非负整数为每个bg定义一个“快乐度”。现给定一个bg列表,上面列出每个bg的快乐度、持续长度、bg发起人的离校时间,请你安排一系列bg的时间使得自己可以获得最大的快乐度。

例如有4场bg:
第1场快乐度为5,持续1小时,发起人必须在1小时后离开;
第2场快乐度为10,持续2小时,发起人必须在3小时后离开;
第3场快乐度为6,持续1小时,发起人必须在2小时后离开;
第4场快乐度为3,持续1小时,发起人必须在1小时后离开。
则获得最大快乐度的安排应该是:先开始第3场,获得快乐度6,在第1小时结束,发起人也来得及离开;再开始第2场,获得快乐度10,在第3小时结束,发起人正好来得及离开。此时已经无法再安排其他的bg,因为发起人都已经离开了学校。因此获得的最大快乐度为16。

注意bg必须在发起人离开前结束,你不可以中途离开一场bg,也不可以中途加入一场bg。
又因为你的人缘太好,可能有多达30个团体bg你,所以你需要写个程序来解决这个时间安排的问题。

Input
测试输入包含若干测试用例。每个测试用例的第1行包含一个整数N (<=30),随后有N行,每行给出一场bg的信息:
h l t
其中 h 是快乐度,l是持续时间(小时),t是发起人离校时间。数据保证l不大于t,因为若发起人必须在t小时后离开,bg必须在主人离开前结束。

当N为负数时输入结束。

Output
每个测试用例的输出占一行,输出最大快乐度。

Sample Input
3
6 3 3
3 2 2
4 1 3
4
5 1 1
10 2 3
6 1 2
3 1 1
-1

Sample Output
7
16

Author
ZJU

Source
浙大计算机研究生复试上机考试-2008年

问题链接:HDU1881 毕业bg
问题简述:(略)
问题分析:0-1背包问题,不解释。
程序说明:(略)
参考链接:(略)
题记:(略)

AC的C++语言程序如下:

/* HDU1881 毕业bg */#include <bits/stdc++.h>using namespace std;const int N = 30 + 1;
struct BG {int h, l, t;
} bg[N];bool cmp(const BG a, const BG b)
{return a.t < b.t;
}int dp[200];int main()
{int n;while (~scanf("%d", &n) && n >= 0) {int mx = 0;for (int i = 0; i < n; i++) {scanf("%d%d%d", &bg[i].h, &bg[i].l, &bg[i].t);mx = max(mx, bg[i].t);}sort(bg, bg + n, cmp);memset(dp, 0, sizeof dp);int ans = 0;for (int i = 0; i < n; i++)for (int j = bg[i].t; j >= bg[i].l; j--) {dp[j] = max(dp[j], dp[j - bg[i].l] + bg[i].h);ans = max(ans, dp[j]);}printf("%d\n", ans);}return 0;
}

HDU1881 毕业bg【0-1背包】相关推荐

  1. hdu 1881 毕业bg

    毕业bg                                                                                Time Limit: 2000 ...

  2. 杭电毕业bg dfs

    思路:这个就是01背包问题差不多.先按持续时间排序.在dfs 这样想 第一场排队 要还是不要,第二场要还是不要,一直到最后一场求出最优解. 毕业bg Problem Description 每年毕业的 ...

  3. Python 0/1背包、动态规划

    参考:http://www.cnblogs.com/fcyworld/p/6243012.html Python 0/1背包.动态规划 0/1背包问题:在能承受一定重量的背包中,放入重量不同,价值不同 ...

  4. P1417 烹调方案 (0/1背包+贪心)

    题目背景 由于你的帮助,火星只遭受了最小的损失.但gw懒得重建家园了,就造了一艘飞船飞向遥远的earth星.不过飞船飞到一半,gw发现了一个很严重的问题:肚子饿了~ gw还是会做饭的,于是拿出了储藏的 ...

  5. 算法分析与设计——蛮力法0/1背包

    蛮力法0/1背包 蛮力法 蛮力法是一种简单直接解决问题的方法,常常直接基于问题的描述,所以蛮力法也是最容易应用的方法. 蛮力法所依赖 的基本技术是遍历,即采用一定的策略依次处理待求解问题的所有元素,从 ...

  6. 数据结构与算法 / 回溯算法(八皇后、0 - 1 背包)

    回溯算法,顾名思义,就是在没有得到最优解的前提下,不断的返回至前面的岔路口位置,重新选择,直至遍历了所有的情况或者得到的预期最优解的情况下再结束. 与贪心算法不同的是,回溯算法理论上是可以得到最优解, ...

  7. 【例1】 0/1背包《信息学奥赛一本通》【解法一】 02

    /* [例1] 0/1背包<信息学奥赛一本通>[解法一] 02 http://ybt.ssoier.cn:8088/problem_show.php?pid=1267 */ #includ ...

  8. HDOJ 2602-Bone Collector(0/1背包模板、打印方案及滚动数组解法)

    0/1背包 一.Bone Collector 解法一:二维数组解法(0/1背包模板代码) 1.1 0/1背包打印方案代码 解法二:滚动数组(一维)解法 2.1 一维滚动数组例题 E-爱玩游戏的Tom ...

  9. 动态规划(五)——0/1背包

    0/1背包 一.0/1背包问题 1.实例讲解 2.DP求解0/1背包 3.输出0/1背包方案 二.0/1背包题目代码(持续更新) 一.0/1背包问题 给定n种物品和一个背包,物品i的重量为wi,价值为 ...

最新文章

  1. 力扣(LeetCode)刷题,简单+中等题(第35期)
  2. matlab 降低维度,求助。。。matlab索引超出维度要怎么修改。。。谢谢
  3. 3,ORM组件XCode(简介)
  4. Hadoop1.2.1集群安装二
  5. SkyWalking集成与案例
  6. angular js 使用pdf.js_排名靠前的几个JS框架发展趋势和前景
  7. Linux 查看磁盘分区、文件系统、使用情况的命令和相关工具介绍
  8. 从中工毕业到年薪30万,我用了2年9个月
  9. ffmpeg编码越来越小_从ffmpeg源代码分析如何解决ffmpeg编码的延迟问题(5)
  10. Vmware fusion强制断电,关闭虚拟机
  11. FPGA常用单位换算
  12. Django:ORM模型类,字段选项,Meta内部类,常见问题处理
  13. [原创]数论个人模板
  14. css控制 区域 圆角 显示
  15. 一、部署虚拟环境来安装Linux系统
  16. UDP包导致大量ARP报文的问题处理
  17. Java项目经验之交易密码安全机制
  18. 语音芯片选型基础,如何计算声音文件的大小?
  19. 搭建NAT64/DNS6实现IPv4/v6转换
  20. PAUL:Patch-based Discriminative Feature Learning for Unsupervised Person Re-identification阅读总结

热门文章

  1. 数字高程模型和地图——thematicmapping.org译文(一)
  2. python打印多个变量名_如何在Python中打印单个和多个变量?
  3. 使用Nacos配置中心云端化本地application.properties
  4. DXUT框架剖析(14)
  5. GameJS——Game Library written in JavaScript
  6. 图像识别-百度AI开放平台
  7. mysql begin rollback_事务控制语句,begin,rollback,savepoint,隐式提交的SQL语句
  8. sublime配置python-rpel_SublimeREPL配置Python3开发
  9. 【java学习之路】(java框架)001.Maven配置及使用
  10. 红外接收器c语言软件,红外线遥控解码接收程序_C语言.doc