| # | Bài tập | Điểm | Thời gian: | Giới hạn bộ nhớ |
|---|---|---|---|---|
| 1 | BOI 2017 - Cat in a tree | 100 (p) | 10.0s | 256M |
| 2 | BOI 2017 - Friends | 100 (p) | 10.0s | 256M |
| 3 | BOI 2017 - Plus Minus | 100 (p) | 10.0s | 256M |
Một con mèo sống trên một cây có \(N\) đỉnh. Nó sẽ phân định lãnh thổ bằng cách “đánh dấu” một số đỉnh của cây. Khoảng cách giữa hai đỉnh được đánh dấu bất kỳ phải ít nhất là \(D\). Hãy tìm số đỉnh lớn nhất mà con mèo có thể đánh dấu.
Ảnh: Just a kitten in a tree, Zoe Shuttleworth, qua Flickr; CC BY-2.0.
Dòng đầu tiên chứa hai số nguyên \(N\) và \(D\). Đỉnh \(0\) là gốc của cây.
Tiếp theo là \(N-1\) dòng. Dòng thứ \(i\), với \(1 \le i \le N-1\), chứa một số nguyên \(x_i\) thỏa mãn \(0 \le x_i < i\), cho biết đỉnh \(x_i\) được nối với đỉnh \(i\).
In ra một số nguyên: số đỉnh lớn nhất có thể được đánh dấu.
Bạn chỉ nhận được điểm của một nhóm khi vượt qua tất cả các test trong nhóm đó. Tổng điểm là tổng điểm của các nhóm.
Ví dụ 1
4 3
0
0
1
2
Ví dụ 2
3 1000
0
0
1
Baltic Olympiad in Informatics 2017, ngày thi thứ 2.
Cuộc sống trung học xoay quanh việc được ở trong nhóm bạn sành điệu nhất. Hiệu trưởng Umbridge biết điều này, và bà cũng biết rằng thông tin là sức mạnh. Bà đã thu thập dữ liệu về toàn bộ \(n\) học sinh trong trường bằng cách hỏi từng người xem ai là bạn của họ. Giờ đây, bà có một danh sách các câu trả lời, nhưng lại nghi ngờ rằng một số học sinh có thể đã không hoàn toàn trung thực khi được hỏi.
Từ những nguồn tin giấu tên nhưng rất đáng tin cậy, Hiệu trưởng Umbridge biết rằng các mối quan hệ bạn bè trong trường thỏa mãn những tính chất sau:
Hai học sinh trong cùng một nhóm không nhất thiết phải là bạn của nhau.
Umbridge thuê bạn xác định liệu có khả năng tất cả học sinh đều nói thật hay bà có thể chắc chắn rằng ít nhất một học sinh đang nói dối, và vì thế nên phạt tất cả học sinh ở lại trường. Điều đó có đáng ngờ về mặt đạo đức không? Có lẽ là có.
Nếu các học sinh có thể đều nói thật, bạn lo rằng bà sẽ quay sang nghi ngờ bạn; vì vậy, bạn còn cần đưa ra một cách chia nhóm hợp lệ để làm bằng chứng, nếu cách chia như vậy tồn tại.
Ảnh: Dolores Umbridge, Julio Oliveiraa, qua Flickr; CC BY-NC-SA 2.0.
Dòng đầu tiên chứa ba số nguyên không âm \(n\), \(p\) và \(q\) như được mô tả ở trên.
Tiếp theo là \(n\) dòng, lần lượt ứng với các học sinh \(i=0,1,\ldots,n-1\). Mỗi dòng bắt đầu bằng số nguyên \(m_i\), là số người bạn mà học sinh \(i\) khai rằng mình có. Sau đó là \(m_i\) số nguyên phân biệt từ \(0\) đến \(n-1\), cho biết những người bạn đó. Các học sinh được đánh số từ \(0\) đến \(n-1\).
Nếu Dolores có thể chắc chắn rằng có người không nói thật, in ra detention. Ngược lại, in ra home.
Nếu dòng đầu tiên là home, bạn phải chứng minh bằng cách in ra một cách chia học sinh thành các nhóm thỏa mãn những yêu cầu ở trên. Nếu có nhiều cách chia, bạn có thể in ra bất kỳ cách nào. Khi đó, dòng thứ hai chứa một số nguyên dương \(G\), là số nhóm. Mỗi dòng trong \(G\) dòng tiếp theo bắt đầu bằng số nguyên dương \(g_i\), là số học sinh trong nhóm thứ \(i\), theo sau trên cùng dòng bởi \(g_i\) số nguyên chỉ các học sinh thuộc nhóm này.
Bạn chỉ nhận được điểm của một nhóm khi vượt qua tất cả các test trong nhóm đó. Tổng điểm là tổng điểm của các nhóm.
Ví dụ 1
4 2 1
1 1
2 0 2
2 1 3
1 2
home
2
2 0 1
2 2 3
Ví dụ 2
5 2 1
1 1
2 0 2
2 1 3
2 2 4
1 3
detention
Ví dụ 3
3 3 3
2 1 2
2 0 2
1 0
detention
Baltic Olympiad in Informatics 2017, ngày thi thứ 2.
Nhà vật lý Matthew đang nghiên cứu điện động lực học lượng tử của một vi mạch hình chữ nhật làm từ silic. Vi mạch gồm một lưới electron rất lớn có kích thước \(N \times M\). Mỗi electron có spin dương, hướng lên, hoặc spin âm, hướng xuống, lần lượt được ký hiệu bằng + và -.
Matthew không biết spin của tất cả electron, nhưng anh đã thực hiện \(K\) phép đo. Trong phép đo thứ \(i\), anh xác định được rằng electron ở vị trí \((y_i,x_i)\) có spin \(s_i\). Anh còn biết rằng trong mỗi lưới con \(2 \times 2\), số electron có spin dương bằng số electron có spin âm. Anh muốn biết liệu có thể khôi phục trạng thái của mọi electron từ các phép đo hay không. Nếu không, anh muốn biết có bao nhiêu trạng thái có thể xảy ra phù hợp với các phép đo. Vì những lý do bí mật, anh muốn lấy kết quả theo modulo \(10^9+7\).
Hình: Marian Sigler, qua Wikimedia Commons; CC0, thuộc phạm vi công cộng.
Dòng đầu tiên chứa ba số nguyên \(N\), \(M\) và \(K\): chiều cao của lưới, chiều rộng của lưới và số phép đo.
Mỗi dòng trong \(K\) dòng tiếp theo chứa một ký hiệu spin \(s_i\), là + hoặc -, rồi đến hai số nguyên \(y_i\) và \(x_i\) (\(1 \le y_i \le N\), \(1 \le x_i \le M\)), là tọa độ của electron. Matthew không bao giờ đo hai lần tại cùng một vị trí.
In ra tổng số trạng thái hợp lệ phù hợp với các phép đo của Matthew, lấy modulo \(10^9+7\).
+ hoặc -.Bạn chỉ nhận được điểm của một nhóm khi vượt qua tất cả các test trong nhóm đó. Tổng điểm là tổng điểm của các nhóm.
Ví dụ 1
2 4 4
+ 1 1
- 1 2
+ 1 3
- 1 4
2
Chỉ có hai lưới hợp lệ:
+-+-
+-+-
và
+-+-
-+-+
Ví dụ 2
3 3 3
- 2 1
+ 2 3
+ 3 3
0
Baltic Olympiad in Informatics 2017, ngày thi thứ 2.