zoukankan      html  css  js  c++  java
  • 刷水题(一) JWG

    今天,为了冲排行榜,我去刷水题了。我一共看到了N道水题,做出第i道题需要a[i]分钟,并获得b[i]点积分。我最多可以刷T分钟水题,问我最多能获得多少积分?

    【输入】

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

    【输出】

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

    【样例输入】

    4 30

    11 5

    31 1000

    11 10

    11 15

    【样例输出】

    25

    题解:

    我看这道题也挺水的。

    01背包,不懂的上百度搜一搜看下面:

    具体思路如下:

    我做了第i题,没做的就少了第i题,

    问题的N就少了1,T就少了a[i],总积分增加了b[i]。

    用一个dp二维数组存储积分(dp[i][j]表示当剩下j分钟时,前i道题能获得的最大积分数)

    代码在此↓↓↓

     1 #include<iostream>
     2 using namespace std;
     3 int dp[1005][1005];
     4 int a[1005],b[1005];
     5 int n,t;
     6 int main()
     7 {
     8     cin>>n>>t;
     9     int i,j;
    10     for(i=1;i<=n;i++)
    11         cin>>a[i]>>b[i];
    12     for(i=1;i<=n;i++)
    13         for(j=0;j<=t;j++)
    14             if(a[i]<=j)
    15                 dp[i][j]=max(dp[i-1][j],dp[i-1][j-a[i]]+b[i]);
    16     cout<<dp[n][t];
    17     return 0;
    18 }
  • 相关阅读:
    2020.12.17
    2020.12.16
    2020.12.15
    2020.12.13
    JavaScript变量:
    第二十七章 ansible变量介绍
    今日收获
    今日收获
    今日收获
    今日收获
  • 原文地址:https://www.cnblogs.com/jiaweigao/p/9503109.html
Copyright © 2011-2022 走看看