小花參加一個搬沙包挑戰賽,關卡有 $n$ 個,編號由 $1$ ~ $n$,初始時,每個關卡有若干個沙包。
選手會選擇一個仍有沙包的關卡,將其所有的沙包搬至編號順序下一個仍有沙包的關卡,若選擇的關卡為當前仍有沙包的關卡中編號最大的,則把沙包搬出關卡即可。
沙包被搬完的關卡標示為完成,意即不會再有沙包被搬進此關卡,挑戰會持續進行直到所有關卡完成,或小花選手無法一次搬動當下任何關卡的所有沙包,小花一次可搬動的沙包上限為 $t$ 個。
每成功搬動 $w$ 個沙包則得 $w$ 分,小花打算採用以下貪心的策略完成挑戰,請計算小花的總分:
• 選擇當前關卡中沙包最少的關卡,若有超過一個關卡有當前最少的沙包,則選擇編號最小的關卡
• 重複以上步驟直到挑戰結束 以測資一為範例:
•選擇關卡4,搬1個沙包到關卡5,得1分,關卡狀態更新為 (4 4 2 0 10 3)
•選擇關卡3,搬2個沙包到關卡5,得2分,關卡狀態更新為 (4 4 0 0 12 3)
•選擇關卡6,已經是當前仍有沙包的關卡中編號最大的,所以將沙包移出關卡就好,得3分,關卡狀態更新為 (4 4 0 0 12 0)
•選擇關卡1,搬4個沙包到關卡2,得4分,關卡狀態更新為 (0 8 0 0 12 0)
•選擇關卡2,搬8個沙包到關卡5,得8分,關卡狀態更新為 (0 0 0 0 20 0)
•所有關卡中沙包最少的為20個,超過小花一次能搬動的上限8個,所以挑戰結束,總分為 1+2+3+4+8=18
第一行有兩個正整數 $n, t (1 \le n \le 3 \times 10^5, 1 \le t \le 10^9)$,第二行有 $n$ 個正整數代表關卡初始的沙包數量,關卡初始沙包數不超過 $10^9$。
子題
20%: $1 \le n \le 100$, $1 \le t \le 1000$
80%: 無額外限制
輸出一個正整數代表小花的總分,保證總分不超過 $10^{15}$。
6 8 4 4 2 1 9 3
18
5 4 4 4 3 2 1
10
apcs 考試 C/C++ 時間限制 1sec, Python 3sec,Zerojudge 時限可能與 APCS 考試不同
感謝匿名網友、leeguanhan0909、chjhsa11155098、whale_island 提供題目敘述與範例測資
ID | User | Problem | Subject | Hit | Post Date |
沒有發現任何「解題報告」 |