震惊!用short二维DP能过!
查看原帖
震惊!用short二维DP能过!
890662
Jason_Teng楼主2024/8/25 09:57

上代码:

#include<iostream>
#include<stdio.h>
#define int short
using namespace std;
int w[3405],val[3405];
int dp[3405][12885];
signed main()
{
    int t,m,res=-1;
    cin >> m >> t;
    for(int i=1;i<=m;i++)
    {
        cin >> w[i] >> val[i];
    }
    for(int i=1;i<=m;i++) 
        for(int j=t;j>=0;j--)  
        {
            if(j>=w[i])
            {
                dp[i][j]=max((int)(dp[i-1][j-w[i]]+val[i]),(int)(dp[i-1][j]));
            }  
            else
            {
                dp[i][j]=dp[i-1][j];
            }              
        }
    cout << dp[m][t] << endl;
}

记录

2024/8/25 09:57
加载中...