POJ 1017 Packets(贪心 装箱问题)

按照依次逻辑顺序,从大到小装,不够加箱。

 1 #include <iostream>
 2 using namespace std;
 3 
 4 int main() {
 5     int s1, s2, s3, s4, s5, s6;
 6     while (cin >> s1 >> s2 >> s3 >> s4 >> s5 >> s6) {
 7         if (s1 + s2 + s3 + s4 + s5 + s6 == 0) break;
 8         int ans = s6 + s5 + s4 + s3 / 4;
 9         s3 = s3 % 4;  // 4个3*3构成1个6*6
10         int c1 = s5 * 11, c2 = s4 * 5;
11         if (s3 == 3) ans++, c2 += 1, c1 += 5;
12         else if (s3 == 2) ans++, c2 += 3, c1 += 6;
13         else if (s3 == 1) ans++, c2 += 5, c1 += 7;
14         if (s2 > c2) {
15             ans = ans + (s2 - c2) / 9;
16             int p = (s2 - c2) % 9;
17             if (p != 0) ans++, c1 = c1 + (9 - p) * 4;
18         } else {
19             c1 = c1 + (c2 - s2) * 4;
20         }
21         if (s1 > c1) {
22             ans = ans + (s1 - c1) / 36;
23             int p = (s1 - c1) % 36;
24             if (p) ans++;
25         }
26         cout << ans << endl;
27     }
28     return 0;
29 }
View Code
原文地址:https://www.cnblogs.com/pavtlly/p/14305897.html