10分求助
查看原帖
10分求助
1029575
Alg_orithm楼主2024/7/17 11:59
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int dp[110][1010];
struct stuff
{
    int h,m;
}b[300];
int main()
{
    memset(dp,0,sizeof(dp));
    int n,m,i,j;
    cin>>m>>n;
    for(i=1;i<=n;i++)
    {
    	scanf("%d%d",&b[i].h,&b[i].m);
    	b[i].m*=b[i].h;
	}
        
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=m;j++)
        {
            if(b[i].h>j)
                dp[i][j]=dp[i-1][j];
            else
                dp[i][j]=max(dp[i-1][j],dp[i-1][j-b[i].h]+b[i].m);       
        }
    }
    cout<<dp[n][m];
    return 0;
}
2024/7/17 11:59
加载中...