NOI Singapore 2026 - Mushroom Ring

Xem PDF



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

Làng Ốc Sên gồm một vòng \(n\) cây nấm khổng lồ, đánh số từ \(1\) đến \(n\). Bên cạnh mỗi cây nấm có \(n-1\) biển chỉ đến tất cả các cây nấm khác, tổng cộng \(n(n-1)\) biển.

Trên một số biển có ghi \(m\) đoạn số liên tiếp. Biển đặt cạnh nấm \(u_i\) và chỉ đến nấm \(v_i\) mang mọi số từ \(a_i\) đến \(b_i\). Các biển ban đầu thỏa hai quy tắc rõ ràng:

  1. Biển cạnh nấm \(u_i\) không được chứa số \(u_i\), tức \(u_i<a_i\) hoặc \(b_i<u_i\).
  2. Hai đoạn trên các biển cạnh cùng một cây nấm không được chứa chung một số. Nếu \(i\ne j\)\(u_i=u_j\) thì \(b_i<a_j\) hoặc \(b_j<a_i\).

Không có ràng buộc tương ứng nào đối với \(v_i\).

Một con ốc đang ở nấm \(c\) muốn đến nấm \(d\). Nếu \(c=d\), nó đã đến nơi. Nếu không, nó tìm trong các biển cạnh nấm \(c\) biển có chứa số \(d\), đi theo biển đó tới \(v_i\), rồi lặp lại. Nhờ hai quy tắc trên, tại mỗi cây nấm có nhiều nhất một biển chứa \(d\).

Ốc bị kẹt nếu không tìm được biển chứa \(d\); nó cũng có thể đi vào chu trình vô hạn mà không qua \(d\).

Độ hữu dụng của hệ thống biển là số cặp có thứ tự \((s,d)\) sao cho ốc xuất phát ở \(s\) có thể đến \(d\) bằng cách đi theo các biển.

Được phép thực hiện nhiều nhất \(k\) chỉnh sửa. Mỗi chỉnh sửa là thêm một số vào một biển hoặc xóa một số khỏi một biển. Sau chỉnh sửa, hai quy tắc rõ ràng vẫn phải được thỏa mãn; các số trên mỗi biển không nhất thiết còn tạo thành một đoạn liên tiếp.

Hãy tìm độ hữu dụng lớn nhất có thể đạt được.

Dữ liệu vào

  • Dòng đầu chứa \(n,m,k\).
  • \(m\) dòng tiếp theo, dòng thứ \(i\) chứa \(u_i,v_i,a_i,b_i\).

Dữ liệu ra

In một số nguyên: độ hữu dụng lớn nhất sau không quá \(k\) chỉnh sửa.

Giới hạn

\[ 2\le n\le150\,000,\quad 1\le m\le300\,000,\quad 0\le k\le10^{12} \]
\[ 1\le u_i,v_i\le n,\quad u_i\ne v_i,\quad 1\le a_i\le b_i\le n \]

Dữ liệu bảo đảm hai quy tắc rõ ràng nêu trong đề.

Chấm điểm

Phần Điểm Giới hạn thêm
1 6 \(n\le200,m\le400,k=0\)
2 6 \(n\le1500,m\le3000,k=0\)
3 22 \(n\le1500,m\le3000,k\le10\)
4 11 \(n\le1500,m\le3000,k\le1000\)
5 7 \(n\le1500,m\le3000\)
6 20 \(n\le30\,000,m\le60\,000,k=0\)
7 15 \(n\le30\,000,m\le60\,000\)
8 13 Không có giới hạn thêm

Ví dụ

Ví dụ 1

Input
6 7 0
1 2 2 3
2 5 3 3
2 5 6 6
4 5 2 3
5 4 1 1
5 6 3 3
6 1 2 5
Output
8
Note

Ví dụ, để đi từ nấm \(6\) tới nấm \(2\), ốc đi theo biển chứa số \(2\) tới nấm \(1\), rồi đi tới nấm \(2\). Tám cặp tới được là \((1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(1,2),(6,2)\).

Hình 1: Hệ thống biển chỉ đường ban đầu của ví dụ 1.

Ví dụ 2

Input
6 7 1
1 2 2 3
2 5 3 3
2 5 6 6
4 5 2 3
5 4 1 1
5 6 3 3
6 1 2 5
Output
10
Note

Có thể thêm số \(2\) vào biển cạnh nấm \(5\) chỉ đến nấm \(6\), nhờ đó có thêm các cặp \((4,2)\)\((5,2)\).

Hình 2: Hệ thống biển sau khi thêm số \(2\) vào biển từ nấm \(5\) đến nấm \(6\).

Ví dụ 3

Input
6 7 2
1 2 2 3
2 5 3 3
2 5 6 6
4 5 2 3
5 4 1 1
5 6 3 3
6 1 2 5
Output
13
Note

Có thể xóa số \(3\) khỏi biển cạnh nấm \(6\) chỉ đến nấm \(1\), rồi thêm số \(3\) vào biển cạnh nấm \(6\) chỉ đến nấm \(3\). Khi đó mọi vị trí xuất phát đều có thể đến nấm \(3\).

Hình 3: Hệ thống biển sau hai chỉnh sửa của ví dụ 3.

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: