hdu 5501 The Highest Mark(变形01背包)
2015-10-13 21:09
232 查看
题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=5501
题目大意:
有n道题目,每道题目初始时候都有一个价值,如果在x分钟后做出这道题目,那么得到的分数就会减少x*b[i],而做一道题目所花的时间c[i]也不同。现在问在限定的时间里面,怎么样做题目能够获得最大的价值。
思路:
题目要求获得最大的价值,但是解决一道题目的价值随着时间的变化而变化,所以不一定是题目做的越多获得的价值越大。我们要考虑的是:在限定的时间里面选择做题的顺序来获得最大价值。
如果假设我们现在已经知道了要做哪些题,只要选择顺序即可。如果对于题1和题2,先做题1损失的价值是c1*b2,先做题2损失的价值则是c2*b1。所以我们要根据损失的价值来排序,使得损失的价值最小。c1*b2<c2*b1变形以后就是b1/c1>b2/c2。
然后就是拿与不拿的问题,01背包。
代码:
http://acm.hdu.edu.cn/showproblem.php?pid=5501
题目大意:
有n道题目,每道题目初始时候都有一个价值,如果在x分钟后做出这道题目,那么得到的分数就会减少x*b[i],而做一道题目所花的时间c[i]也不同。现在问在限定的时间里面,怎么样做题目能够获得最大的价值。
思路:
题目要求获得最大的价值,但是解决一道题目的价值随着时间的变化而变化,所以不一定是题目做的越多获得的价值越大。我们要考虑的是:在限定的时间里面选择做题的顺序来获得最大价值。
如果假设我们现在已经知道了要做哪些题,只要选择顺序即可。如果对于题1和题2,先做题1损失的价值是c1*b2,先做题2损失的价值则是c2*b1。所以我们要根据损失的价值来排序,使得损失的价值最小。c1*b2<c2*b1变形以后就是b1/c1>b2/c2。
然后就是拿与不拿的问题,01背包。
代码:
#include<stdio.h> #include<string.h> #include<algorithm> #define max(a,b) a>b?a:b using namespace std; struct node{ int a,b,c; }p[1005]; bool cmp(node x,node y) { return (double)(x.b*1.0)/x.c>(double)(y.b*1.0)/y.c; } int dp[1005][3005]; //dp[i][j]表示前i门课花j时间所得的最大价值。 int main() { int T,n,t,i,j,k,maxi; scanf("%d",&T); while(T--) { maxi=0; memset(dp,0,sizeof(dp)); scanf("%d%d",&n,&t); for(i=1;i<=n;i++) scanf("%d%d%d",&p[i].a,&p[i].b,&p[i].c); sort(p+1,p+1+n,cmp); // dp[1][] // for(i=1;i<=n;i++) // printf("%d %d %d\n",p[i].a,p[i].b,p[i].c); for(i=1;i<=n;i++) { for(j=1;j<=t;j++) { if(j>=p[i].c) dp[i][j]=max(dp[i-1][j],dp[i-1][j-p[i].c]+p[i].a-j*p[i].b); else dp[i][j]=dp[i-1][j]; // maxi=max(maxi,dp[i][j]); } } for(i=1;i<=t;i++) maxi=max(maxi,dp [i]); printf("%d\n",maxi); } return 0; }
相关文章推荐
- JavaScript 数据类型、运算符
- postgresql导出sql执行结果到文件的方法(转)
- Bash 替换连续多个空格为一个
- ZOJ 2015 10月份 月赛 3911 Prime Query
- 学习JdbcTemplate 时 用到回调函数
- 递归函数的栈表达
- 操作系统之死锁
- 如何用jar命令将Java打包成jar文件详解
- 服务器的数据调取
- Linux Mint中安装Vim补全神器——YouCompleteMe的最简单的方法
- Convolutional Neural Networks for Sentence Classification笔记整理
- ojdbc5.jar
- pat1045Favorite Color Stripe (30)
- 从源码安装gmond,gmetad,gweb
- 搜索引擎关键词抓取 以百度为例 python
- 杭电acm--1049
- BZOJ 1823 JSOI 2010 盛宴 2-SAT
- struts2封装请求参数
- 项目进度管理和项目成本管理作业
- Cocos2D v2.0至v3.x简洁转换指南(三)