动态规划的空间压缩问题

洛谷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;
}
posted @ 2024-09-09 21:08  邓佑孤  阅读(6)  评论(0编辑  收藏  举报