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

    http://acm.hdu.edu.cn/showproblem.php?pid=1171

    我坑在了两个地方, 首先看到-1的时候就结束, 然后就是-1了.  再是数组的范围我一直以为是 100*1000 的, 结果还是小.

    这题为多重背包, 其中 V , W 的值是相同的. 是不是可以用什么单调队列优化?.....

    View Code
     1 #include <iostream>
     2 #define maxn 125005
     3 using namespace std;
     4 long ans[maxn], v[maxn], num[maxn], n, m;
     5 void complete_pack(long v)
     6 {
     7     int i;
     8     for(i = 0; i <= m; i++)
     9     if(i >= v && ans[i-v]+v > ans[i])
    10     ans[i] = ans[i-v]+v;
    11 }
    12 void zero_one_pack(long v)
    13 {
    14     int i;
    15     for(i = m; i >= v; i--)
    16     if(ans[i-v]+v > ans[i])
    17     ans[i] = ans[i-v]+v;
    18 }
    19 void mulity_pack()
    20 {
    21     int i, j;
    22     for(i = 0; i <=m ; i++)
    23     ans[i] = 0;
    24     for(i = 0; i < n; i++)
    25     {
    26         if(v[i]*num[i] >= m)
    27         {
    28             complete_pack(v[i]);
    29         }
    30         else
    31         {
    32             for(j = 1; j < num[i]; )
    33             {
    34                 zero_one_pack(j*v[i]);
    35                 num[i] -= j;
    36                 j *= 2;
    37             }
    38             zero_one_pack(num[i]*v[i]);
    39         }
    40     }
    41 }
    42 int main()
    43 {
    44     long i, sum;
    45     while(cin >> n)
    46     {
    47         if(n<0) break;
    48         sum = 0;
    49         for(i = 0; i < n; i++)
    50         {
    51             cin >> v[i] >> num[i];
    52             sum += v[i] * num[i];
    53         }
    54         m = sum/2;
    55         mulity_pack();
    56         cout << sum -ans[m] << " " << ans[m] << endl;
    57     }
    58     return 0;
    59 }
  • 相关阅读:
    自编游戏
    宣言
    Leetcode: 12. Integer to Roman
    Leetcode: 11. Container With Most Water
    Leetcode: 10. Regular Expression Matching
    网络编程:listen函数
    网络编程:connect函数
    Leetcode: 9. Palindrome Number
    Leetcode: 8. String to Integer (atoi)
    Leetcode: 7. Reverse Integer
  • 原文地址:https://www.cnblogs.com/yoru/p/2664490.html
Copyright © 2011-2022 走看看