毕业bg

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

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
解题思路:这个题目的关键是对结束时间进行排序,这样可以消除后效性,剩下的就是简单的01背包问题啦。。。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;const int maxn = 33;
struct node
{int h,l,t;
}bg[maxn];
int n,dp[1000];int cmp(node a, node b)
{if(a.t != b.t)return a.t < b.t;return a.l < b.l;
}int main()
{   while(scanf("%d",&n) && n >=0){int maxtime;for(int i = 1; i <= n; i++){scanf("%d%d%d",&bg[i].h,&bg[i].l,&bg[i].t);maxtime = max(maxtime,bg[i].t);}sort(bg+1,bg+1+n,cmp);memset(dp,0,sizeof(dp));for(int i = 1; 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);}int ans = 0;for(int i = 1; i <= maxtime; i++)ans = max(ans,dp[i]);printf("%d\n",ans);}return 0;
}

hdu 1881(简单01背包)相关推荐

  1. HDU2602Bone Collector 简单0-1背包

    HDU2602Bone Collector 简单0-1背包 Bone Collector Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: ...

  2. hdu 3449 Consumer 01背包

    http://acm.hdu.edu.cn/showproblem.php?pid=3449 这个题AC的有点稀里糊涂(是1A过的),采用的01背包的方法: 思路:定义了两个数组用来存储最终结果和但购 ...

  3. HDU 2639(01背包求第K大值)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2639 Bone Collector II Time Limit: 5000/2000 MS (Jav ...

  4. 习题整理(简单01背包 可用查并集2022/4/24)

    习题整理 提示:之前的习题在习题集合 文章目录 习题整理 一.诱人的宝藏 1.思路 2.代码 二.晚宴 1.思路 2.代码 三.医师之路 1.思路 2.扩展知识 3.代码 总结 提示:以下是本篇文章正 ...

  5. HDU - 3466(01背包理解)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3466 题意:给你一些钱 m ,然后在这个国家买东西, 共有 n 件物品,每件物品价格P价值V还有一个很 ...

  6. Jam's balance HDU - 5616 (01背包基础题)

    Jim has a balance and N weights. (1≤N≤20) The balance can only tell whether things on different side ...

  7. 简单01背包 POJ3211 Washing Clothes 多种衣服分别dp

    题目连接:http://poj.org/problem?id=3211 大意就是 一个人洗衣服,然后找他媳妇帮忙.有n种颜色的衣服,和m件衣服,每件衣服的颜色和洗出来的时间都会给出来.再洗的时候两个人 ...

  8. hdu 5501(贪心+01背包)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5501 现在有A1,B1,C1和A2,B2,C2这两道题,如果先做1再做2的得分是A1-B1*C1+A2 ...

  9. hrbust 1558 小背包(简单01背包)水坑

    小背包 Time Limit: 1000 MS Memory Limit: 10240 K Total Submit: 1220(237 users) Total Accepted: 307(208 ...

最新文章

  1. 一个PHP的HTTP POST方法
  2. python在线-python+在线
  3. 使用 SQL Server Management Studio (SSMS) 连接 SQL Server实例
  4. Inside the C++ Object Model | Outline
  5. mysql创建表时表明加单引号_python在MySQL表名周围插入单引号(‘)
  6. oracle数据库基础测试,ORACLE数据库基础测试题oracle数据库复习题.docx
  7. 给linux默认mysql设置root密码
  8. 使用kubeadm搭建k8s高可用集群
  9. 三个字的字,值得收藏
  10. 运维工程师岗位职责、职业路线和常用工具
  11. 解决 Windows10系统任务栏图标消失
  12. 2.机器学习基础(一)
  13. 使用Gephi绘制动态网络的三种方法
  14. P1462 通往奥格瑞玛的道路(二分+dijkstra)
  15. 时间复杂度的表示方式
  16. 多媒体计算机系统包括多媒体计算机软件,多媒体计算机系统包括什么
  17. vert.x java post请求无法接收到post请求body中的参数
  18. 去你X的上网行为监控系统
  19. 2023郑州大学电子信息(控制工程)专硕考研成功经验分享
  20. static,this,private关键字

热门文章

  1. 视频会说话:神策智能运营,让你半小时搞定一次活动!
  2. iOS iOS9下修改回HTTP模式进行网络请求
  3. 大数据和人工智能的关系,超全解析
  4. 教你用树莓派打造一个家庭影院
  5. 【NOIP2013】货车运输
  6. 浅谈Perl的类、包、模块与面对对象编程
  7. kettle中使用javascript步骤和fireToDB函数实现自己定义数据库查询
  8. AjaxFileUpload 在C#中应用
  9. SystemCenterOperationsManager2012 SP1系列文章
  10. FAT AP和FIT AP 区别 (无线篇)