刷水题

Posted jiaweigao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了刷水题相关的知识,希望对你有一定的参考价值。

今天,我又去刷水题了。水题好多呀!这些题分为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 }

 

以上是关于刷水题的主要内容,如果未能解决你的问题,请参考以下文章

日常题目-刷水题

刷水题

[洛谷U22157]刷水题(数位dp)(hash)

Poj1003刷水题刷的不亦乐乎

一堆的背包水题沉迷于刷水无可救药~

几匹单调队列水题