你这不是完全背包吗
这题是01背包
by slzx2021zjx @ 2023-08-13 07:09:59
```cpp
#include<bits/stdc++.h>
using namespace std;
long long dp[10000][10000];
long long w[10000],v[10000];
long long m,t;
int main()
{
scanf("%lld%lld",&m,&t);
for(int i=1;i<=t;i++)
{
scanf("%lld%lld",&w[i],&v[i]);
}
for(int i=1;i<=t;i++)
for(int j=m;j>=0;j--)
{
if(j>=w[i])
{
dp[i][j]=max(dp[i-1][j-w[i]]+v[i],dp[i-1][j]);
}
else
{
dp[i][j]=dp[i-1][j];
}
}
printf("%lld",dp[t][m]);
return 0;
}
```
by jizhiyinnitaimei @ 2023-08-13 08:34:56
正解,~~非常简单~~
```cpp
#include <iostream>
using namespace std;
int a[10010],b[10010],f[10010];
int main()
{
int t,n;
cin>>t>>n;
for(int i=1; i<=n; i++)
cin>>a[i]>>b[i];
for(int i=1; i<=n; i++)
for(int j=t; j>=a[i]; j--)
f[j]=max(f[j-a[i]]+b[i],f[j]);
cout<<f[t];
}
```
by longzuchuzihang @ 2023-08-27 11:19:14