洛谷试炼场P1616(动态规划,完全背包)
题目连接https://www.luogu.org/problemnew/show/P1616
#include<bits/stdc++.h>
#define N 100009
using namespace std;
int t[10009],c[10009];
int dp[2][N];
int main()
{
//freopen("t.txt","r",stdin);
int T,M;
scanf("%d%d",&T,&M);
for(int i=0;i<M;i++)
{
scanf("%d%d",&t[i],&c[i]);
}
for(int i=0;i<M;i++)
{
for(int j=0;j<=T;j++)
{
if(j>=t[i])
dp[(i+1)&1][j]=max(dp[i&1][j],dp[(i+1)&1][j-t[i]]+c[i]);
else
dp[(i+1)&1][j]=dp[i&1][j];
}
}
int ans=-1;
for(int i=0;i<=T;i++)
{
if(dp[M&1][i]>ans)
{
ans=dp[M&1][i];
}
}
printf("%d\n",ans);
return 0;
}