CSES 1191 - Cyclic Array
1.0s 512M給定一個由 \(n\) 個數值組成的環狀陣列。每個元素都有兩個鄰居;位置 \(n\) 與位置 \(1\) 的元素也視為互為鄰居。
你的任務是將這個陣列切分成數個子陣列,使得每個子陣列的總和至多為 \(k\)。請問最少需要切成幾個子陣列?
輸入格式
第一行輸入兩個整數 \(n\) 與 \(k\)。
下一行有 \(n\) 個整數 \(x_1, x_2, \ldots, x_n\):陣列的內容。
保證一定存在至少一種切分方式(也就是說,陣列中不會有任何值大於 \(k\))。
輸出格式
輸出一個整數:最少的子陣列數量。
範例輸入 1
8 5
2 2 2 1 3 1 2 1
範例輸出 1
3
說明:這個陣列可以切成三個子陣列:\([2,2,1]\)、\([3,1]\) 以及 \([2,1,2]\)(別忘了這個陣列是環狀的)。
限制
- \(1 \le n \le 2 \times 10^5\)
- \(1 \le x_i \le 10^9\)
- \(1 \le k \le 10^{18}\)
題目來源
題目來自 CSES Problem Set(Antti Laaksonen),授權 CC BY-NC-SA 4.0;本頁為翻譯,以相同授權分享。
登入後即可撰寫程式並提交評測。
登入