日期:2025年5月28日
ZeroJudge 題目連結:m398. 超市排隊 (Supermarket)
解題想法
依序計算三個櫃枱所需時間,再更新最短時間即可。
Python 程式碼
使用時間約為 21 ms,記憶體約為 3.3 MB,通過測試。
import sys
for line in sys.stdin:
abc = list(map(int, line.split())) # 三個櫃枱的人數
idx, imin = 0, float('inf') # 櫃枱編號及所需最短時間
for i, n in enumerate(abc, start=1): # 依序讀取三個櫃枱的人數
arr = list(map(int, input().split())) # 每個顧客購買的商品數量
t = 2 * (n - 1) # 顧客前進所需時間
for d in arr: t += 3*d # 依序讀取商品數量並更新時間
if t < imin: # 如果 t 小於 imin
idx = i; imin = t # 更新 idx 及 imin
print(idx, imin)
C++ 程式碼
使用時間約為 2 ms,記憶體約為 92 kB,通過測試。
#include <cstdio>
using namespace std;
int main() {
int abc[3]; // 三個櫃枱的人數
while(scanf("%d", &abc[0]) != EOF) {
scanf("%d %d", &abc[1], &abc[2]);
int idx = 0, imin = 1E9; // 櫃枱編號及所需最短時間
for(int i=1; i<=3; i++) { // 依序讀取三個櫃枱的人數
int n = abc[i-1]; // 人數
int t = 2*(n-1); // 此櫃枱總時間,先加上顧客前進所需時間
for(int j=0; j<n; j++) {
int d; scanf("%d", &d); // 商品數量
t += 3*d; // 更新時間
}
if (t < imin) { // 如果 t 小於 imin
idx = i; imin = t; // 更新 idx 及 imin
}
}
printf("%d %d\n", idx, imin);
}
return 0;
}
沒有留言:
張貼留言