zoukankan      html  css  js  c++  java
  • POJ 2184 Cow Exhibition

    01背包。把一个属性当成费用,另一个属性当成价值。费用可能为负数,处理的时候加上100000就可以了。

    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #include<algorithm>
    using namespace std;
    
    const int INF=2100000000;
    const int maxn=100+10;
    int n;
    int a[maxn],b[maxn];
    int F=100000;
    int dp[200000+10],tmp[200000+10];
    
    int main()
    {
        while(~scanf("%d",&n))
        {
            for(int i=1; i<=n; i++) scanf("%d%d",&a[i],&b[i]);
            for(int i=0; i<=2*F; i++) dp[i]=-INF;
            for(int i=1; i<=n; i++)
            {
                for(int j=0; j<=2*F; j++) tmp[j]=-INF;
                tmp[F+a[i]]=b[i];
                for(int j=0; j<=2*F; j++)
                {
                    if(dp[j]==-INF) continue;
                    int pre=j-F;
                    tmp[pre+a[i]+F]=max(tmp[pre+a[i]+F],dp[j]+b[i]);
                }
                for(int j=0; j<=2*F; j++) dp[j]=max(dp[j],tmp[j]);
            }
            int ans=0;
            for(int i=F; i<=2*F; i++)
                if(dp[i]>=0)
                    ans=max(ans,i-F+dp[i]);
            printf("%d
    ",ans);
        }
        return 0;
    }
  • 相关阅读:
    uva1220--树的最大独立集+判重
    UVA12186--树型DP
    HDU4171--bfs+树
    远程调用
    高并发业务
    wireshark
    将java程序打包成exe文件
    将博客搬至CSDN
    Mysql分区
    MogileFS
  • 原文地址:https://www.cnblogs.com/zufezzt/p/5350713.html
Copyright © 2011-2022 走看看