小明有 n 杯水,第 i 杯水一開始為 vi 毫升。他的目標是令到每一杯內都恰好有 k 毫升。
為達成這月標,小明有一部神奇的機器,可以讓他在一次操作中選擇若干個連續的水杯,並把這些水杯同時加上或減去 1 毫升。顯然,小明總可以用有限步操作令所有杯都為 k 毫升。請協助小明找出他最小需要操作的次數。
例如,當數列 v 是 (5, 5, 5) 時,小明可以直接選所有杯操作五次得到 (0, 0, 0)。當 v 是 (2, 2, 5, 3, 3) 、目標是 1 時,可以先選所有數操作一次得 (1, 1, 4, 2, 2),選 (4, 2, 2) 操作一次就有 (1, 1, 3, 1, 1),再選 (3) 做兩次就可有 (1, 1, 1, 1, 1),故共需 4步。又譬如 v 是 (12, 11, 10, 9)、目標是 10 時,可以先選 (9) 操作一次得到 (12, 11, 10, 10),選 (12, 11) 一次得到 (11, 10, 10, 10),再選 (11) 一次就有 (10, 10, 10, 10),共使用了 3 步。
(温馨提示:系統能根據完成程度給予部分分數,但若要完全解決這題需要能處理 n, k, vi 較大的情況。)
第一行有一正整數 T (1 <= T <= 100),表示接下來有 T 組獨立的測資。(需要應答 T 次)
每個測資中共兩行。第一行給定兩個整數代表一組 n k,第二行則給 n 個整數(以空格隔開),依次表示數列 v 中每個 vi,
1 <= n <= 105, 0 <= vi <= 109, 0 <= k <= 109。
共輸出 T 行,分別為 T 個測資的答案。對第 i 個測資輸出小明最小需要操作的次數。
4 3 0 5 5 5 5 1 2 2 5 3 3 4 10 12 11 10 9 1 2 2
5 4 3 0
5 3 4 5 6 5 5 8 9 7 9 7 9 5 6 10 2 8 6 9 7 4 9 6 8 0 6 6 4 8 12 10 8 4 2 2 4 8 10
2 5 13 13 10
範例輸入#1 可見題目描述的例子。以上例子均可證明給出的步數是最小值。
!!! 用 random 猜答案是絕對無分的~
ID | User | Problem | Subject | Hit | Post Date |
1013 |
asnewchien@g...
(david chien)
|
a592 | 111 | 2023-05-21 21:14 |