一道完全背包的模板题,一维的完全背包状态转移方程:
f[j] = max(f[j],f[j - t[i]] + v[i]);
这题比较坑的是需要开 long long
#include <bits/stdc++.h>
using namespace std;
long long v[100000],t[100000],f[100000000];
int main()
{
int T,m;
cin>>T>>m;
for(int i = 1;i <= m ;i ++) cin >> t[i] >> v[i];
for(int i = 1;i <= m;i ++)
{
for(int j = t[i];j <= T;j ++)
{
f[j] = max(f[j],f[j - t[i]] + v[i]);
}
}
cout << f[T];
return 0;
}