动态规划的空间压缩问题
以洛谷P1048为例。本题较简单,还有一种压缩需要从后往前计算,遇到时补充。
#include<bits/stdc++.h>
using namespace std;
int T,M;int f[2][1001];int t[101];int v[101];
void bp()
{
for(int i=1;i<=M;i++)
for(int j=1;j<=T;j++)
{
if(j-t[i]>=0)
f[i%2][j]=f[(i-1)%2][j]>f[(i-1)%2][j-t[i]]+v[i]?f[(i-1)%2][j]:f[(i-1)%2][j-t[i]]+v[i];
else
f[i%2][j]=f[(i-1)%2][j];
}
cout<<f[M%2][T];
}
int main()
{
cin>>T>>M;
for(int i=1;i<=M;i++)
cin>>t[i]>>v[i];
bp();
return 0;
}