poj 2184 dp变种

来源:互联网 发布:淘宝电商怎么做 编辑:程序博客网 时间:2024/05/17 23:52
#include<iostream>#include<cstdio>#include<cstring>using namespace std;const int maxn=2*1e5+5;const int inf=0x3f3f3f3f3f3f;int dp[maxn];int main(){    int n,s,f,res=0;    scanf("%d",&n);    fill(dp,dp+maxn,-inf);    dp[100000]=0;    while(n--&&scanf("%d%d",&s,&f)!=EOF)    {        if(s<0&&f<0) continue;        if(s>0)        {            for(int i=200000;i>=s;i--)                if(dp[i-s]>-inf)                   dp[i]=max(dp[i-s]+f,dp[i]);        }        else        {            for(int i=0;i<=200000+s;i++)                if(dp[i-s]>-inf)                   dp[i]=max(dp[i-s]+f,dp[i]);        }        for(int i=100000;i<=200000;i++)            if(dp[i]>=0)               res=max(res,i-100000+dp[i]);    }    printf("%d\n",res);    return 0;}

0 0
原创粉丝点击