RQNOJ 329 刘翔!加油!
2017-09-02 14:06
330 查看
RQNOJ 329
题面
题目描述
刘翔因伤从北京奥运会的跑道上下来以后,十分的痛苦难过!全国人民看到后都为刘翔加油,支持和关心刘翔!因此,很多人写信来安慰他。没多久,就收到了一大堆信件,可他处理不了这么多,便找到ssxyh处理。ssxyh将信件分了n分,每份信件都有自己的,欣赏价值value,消耗时间time,消耗体力h,和得到的鼓舞w。观看信件必须按照价值递增(大于)的顺序观看,不一定需要全看,例如看了价值45之后就不能再看价值23的了。(为什么?,如果先看了小胡的信当然再看布什的信就不爽了,谁看得下去啊。。。。)可是,翔在伤病中,时间和体力都有限,分别为t,m,同时看完之后体力不能为0(会挂的。。)。这下ssxyh也犯难了,只好请求你帮忙,如何在这些条件下使刘翔获得最大的鼓舞呢?输入格式
第一行n,m,t(n,m,t<=100)第二行到n+1行,每行4个数,value,time,h,w.
输出格式
一个数,最大的鼓舞!样例输入
5 30 20 29 5 3 7 50 2 6 5 25 3 7 3 19 5 5 8 25 6 2 7
样例输出
27
分析
注意
此题中的value没有任何用处!不需要存储每一种药物,边读入边计算,否则会MLE。(@WJSoier)
状态
dp[i][j]表示用i的时间,j的体力得到的最大鼓舞转移
dp[a][b]=max(dp[a][b],dp[a-time][b-h]+w);
其中time,h,w为这封信的信息。
代码如下
#include <iostream>
#include <string.h>
using namespace std;
int dp[1000][10000];
// time health
int main()
{
int n,m,t;
int time,h,w;
cin>>n>>m>>t;
m--;
while(n--)
{
cin>>time>>time>>h>>w;
for(int a=t;a>=time;a--)
for(int b=m;b>=h;b--)
dp[a][b]=max(dp[a][b],dp[a-time][b-h]+w);}
cout<<dp[t][m]<<endl;
}
相关文章推荐
- rqnoj-329-刘翔!加油!-二维背包
- rqnoj-329-刘翔!加油!-二维背包
- 【动态规划】【RQNOJ】刘翔!加油!
- [noip]刘翔!加油!(审题细心问题 !!)
- 【背包问题】刘翔!加油!
- 刘翔,加油
- RQNOJ 329 二维背包 顺便收集整理一下相关资料
- 【背包问题】刘翔!加油!
- 20160215--新的一年,新的起点。加油!
- PID736(rqnoj)
- dede:arclist 不能调用文章的副栏目或多个副栏目的解决方法 - 小猪加油
- 飞机加油问题
- 【rqnoj】PID343 mty的考验
- RQNOJ 83 魔兽世界
- 打算给自己两个月的时间把论文发出来,加油
- 第一次拥有自己的博客,希望在这条路上越走越远,加油
- rqnoj28[stupid]愚蠢的宠物
- 加油!
- 2017——新的开始,加油!
- 2017新的开始,加油~