日期:2026年2月18日
ZeroJudge 題目連結:c081. 00102 - Ecological Bin Packing
解題想法
只有 6 種排列方式,分別為 BCG, BGC, CBG, CGB, GBC, GCB,依照這個順序分別計算對應的移動數量,取第一個移動數量最小值。
Python 程式碼
使用時間約為 7 ms,記憶體約為 2.9 MB,通過測試。
import sys
for line in sys.stdin:
b1, g1, c1, b2, g2, c2, b3, g3, c3 = map(int, line.split())
# 測試的排列順序為 BCG, BGC, CBG, CGB, GBC, GCB
ans, imin = "", 1E9
cnt1 = g1+c1+b2+g2+b3+c3
if cnt1 < imin:
ans = "BCG"; imin = cnt1
cnt2 = g1+c1+b2+c2+b3+g3
if cnt2 < imin:
ans = "BGC"; imin = cnt2
cnt3 = b1+g1+g2+c2+b3+c3
if cnt3 < imin:
ans = "CBG"; imin = cnt3
cnt4 = b1+g1+b2+c2+g3+c3
if cnt4 < imin:
ans = "CGB"; imin = cnt4
cnt5 = b1+c1+g2+c2+b3+g3
if cnt5 < imin:
ans = "GBC"; imin = cnt5
cnt6 = b1+c1+b2+g2+g3+c3
if cnt6 < imin:
ans = "GCB"; imin = cnt6
print(ans, imin)
使用時間約為 7 ms,記憶體約為 2.8 MB,通過測試。
import sys
for line in sys.stdin:
b1, g1, c1, b2, g2, c2, b3, g3, c3 = map(int, line.split())
# BCG
cnt1 = g1+c1+b2+g2+b3+c3
# BGC
cnt2 = g1+c1+b2+c2+b3+g3
# CBG
cnt3 = b1+g1+g2+c2+b3+c3
# CGB
cnt4 = b1+g1+b2+c2+g3+c3
# GBC
cnt5 = b1+c1+g2+c2+b3+g3
# GCB
cnt6 = b1+c1+b2+g2+g3+c3
ans = sorted([(cnt1, "BCG"), (cnt2, "BGC"), (cnt3, "CBG"), (cnt4, "CGB"), (cnt5, "GBC"), (cnt6, "GCB")])
print(ans[0][1], ans[0][0])
C++ 程式碼
使用時間約為 1 ms,記憶體約為 324 kB,通過測試。
#include <iostream>
#include <string>
using namespace std;
int main() {
ios::sync_with_stdio(0); cin.tie(0);
int b1, g1, c1, b2, g2, c2, b3, g3, c3;
while(cin >> b1 >> g1 >> c1 >> b2 >> g2 >> c2 >> b3 >> g3 >> c3) {
// 測試的排列順序為 BCG, BGC, CBG, CGB, GBC, GCB
string ans = "";
int imin = 1000000000;
int cnt1 = g1+c1+b2+g2+b3+c3;
if (cnt1 < imin) {
ans = "BCG"; imin = cnt1;
}
int cnt2 = g1+c1+b2+c2+b3+g3;
if (cnt2 < imin) {
ans = "BGC"; imin = cnt2;
}
int cnt3 = b1+g1+g2+c2+b3+c3;
if (cnt3 < imin) {
ans = "CBG"; imin = cnt3;
}
int cnt4 = b1+g1+b2+c2+g3+c3;
if (cnt4 < imin) {
ans = "CGB"; imin = cnt4;
}
int cnt5 = b1+c1+g2+c2+b3+g3;
if (cnt5 < imin) {
ans = "GBC"; imin = cnt5;
}
int cnt6 = b1+c1+b2+g2+g3+c3;
if (cnt6 < imin) {
ans = "GCB"; imin = cnt6;
}
cout << ans << " " << imin << "\n";
}
return 0;
}
沒有留言:
張貼留言