JOI 2021 - Road Construction

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: 2300 (p) Thời gian: 10.0s Bộ nhớ: 2G Input: bàn phím Output: màn hình

Vương quốc JOI có \(N\) thị trấn, đánh số từ \(1\) đến \(N\). Lãnh thổ được xem là mặt phẳng \(xy\). Thị trấn \(i\) (\(1\le i\le N\)) có tọa độ \((X_i,Y_i)\).

Vương quốc dự định xây \(K\) con đường nối các thị trấn. Chi phí xây một con đường nối thị trấn \(i\) và thị trấn \(j\) (\(i\ne j\)) là \(|X_i-X_j|+|Y_i-Y_j|\) yên. Việc xây đường nối \(i\) với \(j\) và việc xây đường nối \(j\) với \(i\) được xem là cùng một phương án.

Bạn phụ trách dự án và muốn biết chi phí của một số cặp thị trấn để ước tính ngân sách. Trong \(N(N-1)/2\) cặp thị trấn có thể nối bằng đường, bạn muốn biết chi phí của \(K\) con đường rẻ nhất.

Cho tọa độ các thị trấn và \(K\), hãy tính chi phí của \(K\) con đường rẻ nhất.

Dữ liệu vào

Đọc từ đầu vào chuẩn theo định dạng sau. Mọi giá trị đều là số nguyên.

N K
X_1 Y_1
...
X_N Y_N

Dữ liệu ra

In \(K\) dòng. Dòng thứ \(k\) (\(1\le k\le K\)) chứa chi phí của con đường rẻ thứ \(k\).

Ràng buộc

  • \(2\le N\le250000\).
  • \(1\le K\le\min(250000,N(N-1)/2)\).
  • \(-10^9\le X_i,Y_i\le10^9\) với mọi \(1\le i\le N\).
  • \((X_i,Y_i)\ne(X_j,Y_j)\) với mọi \(1\le i<j\le N\).

Phân nhóm

  • Nhóm 1 (5 điểm): \(N\le1000\).
  • Nhóm 2 (6 điểm): \(Y_i=0\) với mọi \(1\le i\le N\).
  • Nhóm 3 (7 điểm): \(K=1\).
  • Nhóm 4 (20 điểm): \(K\le10\).
  • Nhóm 5 (27 điểm): \(N\le100000\).
  • Nhóm 6 (35 điểm): Không có ràng buộc bổ sung.

Ví dụ

Ví dụ 1

Input
3 2
-1 0
0 2
0 0
Output
1
2
Giải thích

Ba thị trấn lần lượt có tọa độ \((-1,0),(0,2),(0,0)\). Có \(3\times2/2=3\) cặp thị trấn:

  • Nối thị trấn \(1,2\) tốn \(|(-1)-0|+|0-2|=3\) yên.
  • Nối thị trấn \(1,3\) tốn \(|(-1)-0|+|0-0|=1\) yên.
  • Nối thị trấn \(2,3\) tốn \(|0-0|+|2-0|=2\) yên.

Theo thứ tự từ rẻ nhất, các chi phí là \(1,2,3\). Vì vậy, in \(1\) ở dòng đầu và \(2\) ở dòng thứ hai.

Ví dụ này thỏa mãn các nhóm \(1,4,5,6\).

Ví dụ 2

Input
5 4
1 -1
2 0
-1 0
0 2
0 -2
Output
2
2
3
3
Giải thích

Với \(N=5\), có \(5\times4/2=10\) cặp thị trấn. Chi phí theo thứ tự từ rẻ nhất là \(2,2,3,3,3,3,4,4,4,4\). Do đó, bốn chi phí rẻ nhất là \(2,2,3,3\).

Ví dụ này thỏa mãn các nhóm \(1,4,5,6\).

Ví dụ 3

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

Ví dụ này thỏa mãn các nhóm \(1,2,4,5,6\).

Ví dụ 4

Input
10 10
10 -8
7 2
7 -8
-3 -6
-2 1
-8 6
8 -1
2 4
6 -6
2 -1
Output
3
3
4
5
6
6
6
7
7
7
Giải thích

Ví dụ này thỏa mãn các nhóm \(1,4,5,6\).

Nguồn

JOI 2020/2021, kỳ thi tuyển chọn mùa xuân, ngày thi thứ 2. Đề của Ủy ban Olympic Tin học Nhật Bản (JCIOI). Bản dịch tiếng Việt theo giấy phép CC BY-SA 4.0.

Tệp

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: