zoukankan      html  css  js  c++  java
  • HDU 1171 Big event in hdu

    这题 就是 简单的 多重背包应用..本来以为可以很快地写出来;

    WA了无数次就是没找出哪里错了(有太自信的缘故);

    百度了半天别人的代码,对照了半小时...说实话都要吐血了....;

    终于发现了哪里错了;

    教训,教训啊;再简单的题目也要慢慢来,不能太自信;

     1 #include<iostream>
     2 #define maxn 2000000
     3 int v[1005],c[1005],dp[maxn];
     4 #define max(a,b) (a>b?a:b)
     5 using namespace std;
     6 int main()
     7 {
     8     //freopen("1171.txt","r",stdin);
     9     int n,i,j,sum;
    10     while(~scanf("%d",&n))
    11     {
    12         memset(v,0,sizeof(v));
    13         memset(c,0,sizeof(c));
    14         sum=0;
    15         if(n<=0) break;
    16         for(i=1;i<=n;i++)
    17         {
    18             scanf("%d%d",v+i,c+i);
    19             sum+=v[i]*c[i];
    20         }
    21         memset(dp,0,sizeof(dp));
    22         int value=sum/2;
    23         for(i=1;i<=n;i++)
    24         {
    25             if(v[i]*c[i]>=value)
    26             {
    27                 for(j=v[i];j<=value;j++)
    28                     dp[j]=max(dp[j],dp[j-v[i]]+v[i]);
    29                 continue;
    30             }
    31             int k=1;
    32             while(k<c[i])
    33             {
    34                 for(j=value;j>=v[i]*k;j--)
    35                     dp[j]=max(dp[j],dp[j-k*v[i]]+k*v[i]);
    36                 c[i]-=k;
    37                 k+=k;
    38             }
    39             for(j=value;j>=v[i]*c[i];j--)
    40                 dp[j]=max(dp[j],dp[j-c[i]*v[i]]+v[i]*c[i]);
    41         }
    42         
    43         printf("%d %d
    ",sum-dp[value],dp[value]);
    44     }
    45     return 0;
    46 }
  • 相关阅读:
    Memcached安装配置及访问
    Nginx 学习
    Python Django之路由系统
    Nginx 反向代理、负载均衡、页面缓存、URL重写以及读写分离
    Python 之Django
    Python 之WEB框架
    Python 之WEB前端插件
    JS 之作用域链和闭包
    Python 前端之JQuery
    对应用程序进行描述说明(权限,平台)
  • 原文地址:https://www.cnblogs.com/xiaoniuniu/p/3895787.html
Copyright © 2011-2022 走看看