JOI 2018 - Stove

Xem PDF



Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 1100 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Trong phòng của JOI-kun có một chiếc lò sưởi. Vì đã quen với trời lạnh, cậu không cần bật lò khi ở trong phòng một mình. Tuy nhiên, khi có khách, cậu phải bật lò sưởi.

Một ngày nọ, có \(N\) vị khách đến thăm JOI-kun. Vị khách thứ \(i\) (\(1\le i\le N\)) đến vào thời điểm \(T_i\) và rời đi vào thời điểm \(T_i+1\). Tại mỗi thời điểm, có nhiều nhất một vị khách ở thăm.

JOI-kun có thể bật hoặc tắt lò sưởi vào bất kỳ thời điểm nào. Mỗi lần bật lò cần dùng một que diêm. Cậu chỉ có \(K\) que diêm, nên có thể bật lò nhiều nhất \(K\) lần. Đầu ngày, lò sưởi đang tắt.

Khi được bật, lò sưởi tiêu thụ nhiên liệu. Vì vậy, JOI-kun muốn chọn các thời điểm bật và tắt sao cho tổng thời gian lò hoạt động nhỏ nhất, đồng thời lò luôn được bật khi có khách.

Cho thời gian ghé thăm của các vị khách và số que diêm, hãy tính tổng thời gian hoạt động nhỏ nhất của lò sưởi.

Dữ liệu vào

Đọc từ đầu vào chuẩn:

  • Dòng đầu chứa hai số nguyên \(N,K\), cách nhau bởi dấu cách: số khách và số que diêm.
  • Dòng thứ \(i\) trong \(N\) dòng tiếp theo chứa số nguyên \(T_i\), là thời điểm vị khách thứ \(i\) đến. Người đó rời đi vào thời điểm \(T_i+1\).

Dữ liệu ra

Ghi một dòng chứa tổng thời gian hoạt động nhỏ nhất của lò sưởi.

Ràng buộc

  • \(1\le N\le100\,000\).
  • \(1\le K\le N\).
  • \(1\le T_i\le10^9\) với \(1\le i\le N\).
  • \(T_i<T_{i+1}\) với \(1\le i<N\).

Phân nhóm

  1. (20 điểm) \(N\le20\)\(1\le T_i\le20\) với mọi \(1\le i\le N\).
  2. (30 điểm) \(N\le5000\).
  3. (50 điểm) Không có ràng buộc bổ sung.

Ví dụ

Ví dụ 1

Input
3 2
1
3
6
Output
4
Giải thích

Có ba vị khách đến thăm. JOI-kun có thể bật và tắt lò như sau:

  • Bật lò ở thời điểm \(1\), khi vị khách thứ nhất đến.
  • Tắt lò ở thời điểm \(4\), khi vị khách thứ hai rời đi.
  • Bật lò ở thời điểm \(6\), khi vị khách thứ ba đến.
  • Tắt lò ở thời điểm \(7\), khi vị khách thứ ba rời đi.

Lò luôn bật khi có khách, được bật hai lần và có tổng thời gian hoạt động \((4-1)+(7-6)=4\). Không thể làm tổng thời gian nhỏ hơn \(4\), nên đáp án là \(4\).

Ví dụ 2

Input
3 1
1
2
6
Output
6
Giải thích

JOI-kun chỉ có thể bật lò một lần. Cậu bật lò ở thời điểm \(1\), khi vị khách thứ nhất đến, và tắt lò ở thời điểm \(7\), khi vị khách thứ ba rời đi.

Lưu ý rằng thời điểm một vị khách rời đi có thể trùng với thời điểm vị khách tiếp theo đến.

Ví dụ 3

Input
3 3
1
3
6
Output
3
Giải thích

JOI-kun bật lò mỗi khi một vị khách đến và tắt lò khi người đó rời đi.

Ví dụ 4

Input
10 5
1
2
5
6
8
11
13
15
16
20
Output
12

Nguồn

JOI 2017/2018, vòng chung kết, bài Stove. Đề do Japanese Committee for the International Olympiad in Informatics công bố. Đề gốc tiếng Anh. Bản dịch tiếng Việt theo CC BY-SA 4.0.

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.

Kỳ thi: