美文网首页
poj1017 枚举(二维装箱)

poj1017 枚举(二维装箱)

作者: 暖昼氤氲 | 来源:发表于2019-11-01 17:05 被阅读0次
/*
Time:2019.11.1
Author: Goven
type:二维装箱:枚举 
err:
ref:https://blog.csdn.net/lyy289065406/article/details/6674366
*/
#include<iostream>

using namespace std;

int main()
{
    int a[7], num[] = {0, 5, 3, 1}, k[] = {0, 7, 6, 5};
    int flag, sum, t;
    while(1) {
        flag = 0;
        for (int i = 1; i < 7; i++) {
            cin >> a[i];
            flag += a[i];
        }
        if (!flag) break;
        
        sum = a[6];
        
        sum += a[5];
        a[1] = max(0, a[1] - 11 * a[5]);
        
        sum += a[4];
        if (a[4] * 5 > a[2]) {
            a[1] = max(0, a[1] - (20 * a[4] - 4 * a[2]));
            a[2] = 0;
        }
        else {
            a[2] -= a[4] * 5;
        }
        
        sum += a[3] / 4;
        t = a[3] % 4;
        if (t) {
            sum++;
            if (num[t] >= a[2]) {
                a[1] = max(0, a[1] - (36 - t * 9 - 4 * a[2]));
                a[2] = 0;
            }
            else {
                a[2] -= num[t];
                a[1] = max(0, a[1] - k[t]);
            }
        }
        
        sum += a[2] / 9;
        t = a[2] % 9;
        if (t){
            sum++; 
            a[1] = max(0, a[1] - (36 - 4 * t)); 
        }
        
        sum += a[1] / 36;
        if (a[1] % 36) sum++;

        cout << sum << endl;
    }
    return 0;
}

相关文章

网友评论

      本文标题:poj1017 枚举(二维装箱)

      本文链接:https://www.haomeiwen.com/subject/hchqbctx.html