首页 > 其他 > 详细

刷水题(二)

时间:2018-08-20 21:26:00      阅读:157      评论:0      收藏:0      [点我收藏+]

今天,我又去刷水题了。水题好多呀!这些题分为N个难度级别,做出第i个难度级别的任意一题都需要a[i]分钟,并获得b[i]点积分。我最多可以刷T分钟水题,问我最多能获得多少积分?

【输入】

第一行两个正整数N和T,接下来的N行每行两个正整数数a[i]和b[i]。

【输出】

一个数,表示我最多可以获得的积分。

【样例输入】

4 50

1 10

3 40

9 130

27 400

【样例输出】

720

题解:

直接上代码(没错,就是这么简单)

 1 #include<iostream>
 2 using namespace std;
 3 int dp[1005];
 4 int a,b;
 5 int n,t;
 6 int main()
 7 {
 8     cin>>n>>t;
 9     int i,j;
10     for(i=1;i<=n;i++)
11     {
12         cin>>a>>b;
13         for(j=a;j<=t;j++)
14             dp[j]=max(dp[j],dp[j-a]+b);
15     }
16     cout<<dp[t];
17     return 0;
18 }

我把这段代码稍微改一下,就变成了刷水题(一)的一个更好的解,不信试试

 1 #include<iostream>
 2 using namespace std;
 3 int dp[1005];
 4 int a,b;
 5 int n,t;
 6 int main()
 7 {
 8     cin>>n>>t;
 9     int i,j;
10     for(i=1;i<=n;i++)
11     {
12         cin>>a>>b;
13         for(j=t;j>=a;j--)//从后往前循环
14             dp[j]=max(dp[j],dp[j-a]+b);
15     }
16     cout<<dp[t];
17     return 0;
18 }

 

刷水题(二)

原文:https://www.cnblogs.com/jiaweigao/p/9507793.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!