| # | Bài tập | Điểm | Thời gian: | Giới hạn bộ nhớ |
|---|---|---|---|---|
| 1 | JOI 2025 - Masking Tape | 100 (p) | 2.0s | 1G |
| 2 | JOI 2025 - Billiards | 100 (p) | 1.0s | 1G |
| 3 | JOI 2025 - Softcream | 100 (p) | 2.0s | 1G |
| 4 | JOI 2025 - Intimate Chef | 100 (p) | 4.0s | 1G |
| 5 | JOI 2025 - Collision | 100 (p) | 9.0s | 1G |
JOI đang chơi tô màu bằng giấy và băng dính che sơn.
Tờ giấy hình chữ nhật được chia thành lưới gồm \(H\) hàng và \(W\) cột. Gọi ô ở hàng thứ \(i\) từ trên xuống (\(1 \le i \le H\)), cột thứ \(j\) từ trái sang (\(1 \le j \le W\)) là ô \((i, j)\).
Mỗi ô có một màu, được biểu diễn bằng một số nguyên. Ban đầu, màu của tất cả các ô đều là \(0\).
JOI thực hiện \(Q\) thao tác với tờ giấy và băng dính. Thao tác thứ \(k\) (\(1 \le k \le Q\)) được mô tả tùy theo giá trị của số nguyên \(q_k\) như sau:
Sau khi hoàn thành \(Q\) thao tác, JOI bóc tất cả băng dính ra. Khi bóc băng dính khỏi một ô, màu của ô đó vẫn là màu ngay trước khi ô bị băng dính che phủ.
Cho thông tin về \(Q\) thao tác, hãy xác định màu cuối cùng của tất cả các ô trên tờ giấy.
Dữ liệu vào có dạng:
H W Q
(Query 1)
(Query 2)
...
(Query Q)
Mỗi dòng \((\mathrm{Query}\ k)\) (\(1 \le k \le Q\)) chứa các số nguyên cách nhau bởi dấu cách. Số nguyên đầu tiên là \(q_k\), và dòng này có một trong hai dạng:
1 x_k y_k c_k.2 x_k y_k.In màu cuối cùng của tất cả các ô trên \(H\) dòng. Dòng thứ \(i\) (\(1 \le i \le H\)) chứa \(W\) số nguyên cách nhau bởi dấu cách, trong đó số thứ \(j\) (\(1 \le j \le W\)) là màu của ô \((i, j)\).
Ví dụ 1
5 5 4
1 2 2 1
2 1 2
2 3 3
1 1 3 5
0 0 0 5 0
0 1 1 5 0
0 1 1 0 0
0 0 0 0 0
0 0 0 0 0
Xét lần lượt \(4\) thao tác.
Ở thao tác thứ \(1\), \(q_1 = 1\). Cả bốn ô \((2, 2)\), \((2, 3)\), \((3, 2)\), \((3, 3)\) đều không bị băng dính che phủ, nên màu của chúng được đổi thành \(1\). Khi đó, tờ giấy như sau:
0 0 0 0 0
0 1 1 0 0
0 1 1 0 0
0 0 0 0 0
0 0 0 0 0
Ở thao tác thứ \(2\), \(q_2 = 2\). Các ô \((1, 2)\), \((1, 3)\), \((2, 2)\), \((2, 3)\) được che bằng băng dính. Khi đó, tờ giấy như sau; dấu * bên phải số biểu diễn màu của một ô cho biết ô đó bị băng dính che phủ:
0 0* 0* 0 0
0 1* 1* 0 0
0 1 1 0 0
0 0 0 0 0
0 0 0 0 0
Ở thao tác thứ \(3\), \(q_3 = 2\). Các ô \((3, 3)\), \((3, 4)\), \((4, 3)\), \((4, 4)\) được che bằng băng dính. Khi đó, tờ giấy như sau:
0 0* 0* 0 0
0 1* 1* 0 0
0 1 1* 0* 0
0 0 0* 0* 0
0 0 0 0 0
Ở thao tác thứ \(4\), \(q_4 = 1\). Các ô \((1, 4)\), \((2, 4)\) không bị băng dính che phủ, nên màu của chúng được đổi thành \(5\). Các ô \((1, 3)\), \((2, 3)\) bị băng dính che phủ nên không thay đổi. Khi đó, tờ giấy như sau:
0 0* 0* 5 0
0 1* 1* 5 0
0 1 1* 0* 0
0 0 0* 0* 0
0 0 0 0 0
Vì vậy, sau khi bóc tất cả băng dính, màu cuối cùng của các ô đúng như dữ liệu ra của ví dụ.
Ví dụ này thỏa mãn ràng buộc của bài toán con \(3\).
Ví dụ 2
5 5 3
1 1 1 2
1 3 3 3
1 2 4 2
2 2 0 0 0
2 2 0 2 2
0 0 3 2 2
0 0 3 3 0
0 0 0 0 0
Ví dụ này thỏa mãn ràng buộc của các bài toán con \(2, 3\).
Ví dụ 3
10 10 10
2 5 7
2 5 6
1 5 6 1
1 9 2 1
2 1 1
1 2 4 2
2 3 2
1 2 2 3
1 9 9 2
1 8 8 1
0 0 0 0 0 0 0 0 0 0
0 0 3 2 2 0 0 0 0 0
0 0 0 2 2 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1 1 0
0 1 1 0 0 0 0 1 1 2
0 1 1 0 0 0 0 0 2 2
Ví dụ này thỏa mãn ràng buộc của bài toán con \(3\).
Bản dịch tiếng Việt từ đề gốc tiếng Nhật của Ủy ban Olympic Tin học Nhật Bản. Đề gốc và bản dịch được cung cấp theo giấy phép CC BY-SA 4.0.
Bitaro đang chơi bi-a. Bi-a ở đất nước JOI là trò chơi sử dụng \(N\) viên bi được đánh số \(1, 2, \ldots, N\) đặt trên bàn, trên bàn có các lỗ để đưa bi vào. Một viên bi đã rơi vào lỗ sẽ không được đặt trở lại bàn, nên không thể đưa viên bi đó vào lỗ lần nữa. Mục tiêu của Bitaro là đưa vào lỗ một viên bi có số lớn nhất có thể.
Đưa bi vào lỗ đòi hỏi sự tập trung. Ban đầu, mức tập trung của Bitaro là \(X\). Khi đưa viên bi \(i\) (\(1 \le i \le N\)) vào lỗ, mức tập trung giảm đi \(A_i\). Nếu mức tập trung nhỏ hơn \(A_i\), Bitaro không thể đưa viên bi \(i\) vào lỗ.
Trò chơi này còn có quy tắc về thứ tự đưa bi vào lỗ. Cụ thể, nếu \(P_i = -1\) (\(1 \le i \le N\)), có thể đưa viên bi \(i\) vào lỗ bất cứ lúc nào, miễn là có đủ mức tập trung. Nếu \(P_i \ne -1\), để đưa viên bi \(i\) vào lỗ thì viên bi \(P_i\) phải đã được đưa vào lỗ trước đó.
Cho mức tập trung ban đầu của Bitaro và thông tin về từng viên bi, hãy xác định Bitaro có thể đưa ít nhất một viên bi vào lỗ hay không. Nếu có, hãy tìm số lớn nhất của một viên bi mà Bitaro có thể đưa vào lỗ.
Dữ liệu vào có dạng:
N X
A_1 A_2 ... A_N
P_1 P_2 ... P_N
In trên một dòng số lớn nhất của một viên bi mà Bitaro có thể đưa vào lỗ. Nếu Bitaro không thể đưa bất kỳ viên bi nào vào lỗ, in ra -1.
Ví dụ 1
6 7
1 2 4 3 10 100
-1 -1 -1 -1 -1 -1
4
Ban đầu, mức tập trung của Bitaro là \(7\). Vì \(P_i = -1\) với mọi \(1 \le i \le N\), Bitaro có thể đưa bất kỳ viên bi nào vào lỗ bất cứ lúc nào, miễn là có đủ mức tập trung.
Chẳng hạn, Bitaro có thể đưa viên bi \(4\) vào lỗ như sau:
Bitaro không thể đưa viên bi \(5\) hay \(6\) vào lỗ. Vì vậy, số lớn nhất của một viên bi mà Bitaro có thể đưa vào lỗ là \(4\).
Ví dụ này thỏa mãn ràng buộc của các bài toán con \(1, 3, 4, 5, 6\).
Ví dụ 2
5 12
1 2 3 5 8
-1 1 2 3 4
4
Ban đầu, mức tập trung của Bitaro là \(12\). Chẳng hạn, Bitaro có thể đưa viên bi \(4\) vào lỗ như sau:
Bitaro không thể đưa viên bi \(5\) vào lỗ. Vì vậy, số lớn nhất của một viên bi mà Bitaro có thể đưa vào lỗ là \(4\).
Ví dụ này thỏa mãn ràng buộc của các bài toán con \(2, 3, 4, 5, 6\).
Ví dụ 3
8 10
3 1 4 1 5 9 2 6
-1 1 2 -1 4 4 5 7
7
Ví dụ này thỏa mãn ràng buộc của các bài toán con \(3, 4, 5, 6\).
Ví dụ 4
2 1000000000000000
1 1
2 1
-1
Vì \(P_1 = 2\), muốn đưa viên bi \(1\) vào lỗ thì viên bi \(2\) phải đã được đưa vào lỗ. Ngược lại, vì \(P_2 = 1\), muốn đưa viên bi \(2\) vào lỗ thì viên bi \(1\) phải đã được đưa vào lỗ. Do đó, Bitaro không thể đưa bất kỳ viên bi nào vào lỗ, nên in ra -1.
Ví dụ này thỏa mãn ràng buộc của các bài toán con \(5, 6\).
Ví dụ 5
9 2468024680
123456789 234567891 345678912 456789123 567891234 678912345 789123456 891234567 912345678
6 5 4 -1 3 2 1 9 8
6
Ví dụ này thỏa mãn ràng buộc của các bài toán con \(5, 6\).
Bản dịch tiếng Việt từ đề gốc tiếng Nhật của Ủy ban Olympic Tin học Nhật Bản. Đề gốc và bản dịch được cung cấp theo giấy phép CC BY-SA 4.0.
Alice và Bob đến cửa hàng kem tươi JOICE. Tại đây, khách hàng đặt một cây kem bằng cách chọn đúng một hương vị, một loại ốc quế và một loại đồ phủ.
Giá của cây kem là tổng giá của hương vị, ốc quế và đồ phủ đã chọn. Với số nguyên \(P\) cho trước, điểm số của cây kem là giá trị tuyệt đối của hiệu giữa giá cây kem và \(P\).
Alice và Bob định cùng đặt một cây kem, nhưng mong muốn của hai người hoàn toàn trái ngược nhau: Alice muốn điểm số lớn nhất có thể, còn Bob muốn điểm số nhỏ nhất có thể. Vì vậy, họ quyết định chọn hương vị, ốc quế và đồ phủ theo thứ tự sau:
Cho thông tin về các hương vị, loại ốc quế, loại đồ phủ và số nguyên \(P\), hãy tìm điểm số của cây kem được đặt cuối cùng nếu cả hai người đều lựa chọn tối ưu ở mỗi lượt.
Dữ liệu vào có dạng:
X Y Z P
A_1 A_2 ... A_X
B_1 B_2 ... B_Y
C_1 C_2 ... C_Z
In trên một dòng điểm số của cây kem được đặt cuối cùng.
Ví dụ 1
1 1 3 22
5
10
9 2 3
5
Có \(3\) cách chọn hương vị, ốc quế và đồ phủ như sau:
Đầu tiên, Alice chọn hương vị có giá \(5\), rồi Bob chọn loại ốc quế có giá \(10\).
Cuối cùng, vì Alice muốn điểm số lớn nhất có thể, lựa chọn tối ưu là loại đồ phủ có giá \(2\), để điểm số bằng \(5\).
Vì vậy, khi cả hai lựa chọn tối ưu, điểm số là \(5\).
Ví dụ này thỏa mãn ràng buộc của tất cả các bài toán con.
Ví dụ 2
1 2 2 100
11
33 44
40 60
15
Có \(4\) cách chọn hương vị, ốc quế và đồ phủ như sau:
Đầu tiên, Alice chọn hương vị có giá \(11\).
Tiếp theo, Bob chọn một trong hai loại ốc quế có giá \(33\) và \(44\). Tùy theo lựa chọn của Bob, Alice sẽ thực hiện như sau để điểm số lớn nhất có thể:
Vì Bob muốn điểm số nhỏ nhất có thể, lựa chọn tối ưu là loại ốc quế có giá \(44\), để điểm số bằng \(15\).
Vì vậy, khi cả hai lựa chọn tối ưu, điểm số là \(15\).
Ví dụ này thỏa mãn ràng buộc của các bài toán con \(2, 3, 4, 5\).
Ví dụ 3
2 2 2 0
15 23
5 16
23 45
73
Khi \(P = 0\), điểm số chính là tổng giá của hương vị, ốc quế và đồ phủ đã chọn. Vì vậy, lựa chọn tối ưu của Alice là hương vị và loại đồ phủ có giá cao hơn, còn lựa chọn tối ưu của Bob là loại ốc quế có giá thấp hơn.
Do đó, giá của hương vị, ốc quế và đồ phủ được chọn lần lượt là \(23, 5, 45\), và điểm số là \(73\).
Ví dụ này thỏa mãn ràng buộc của các bài toán con \(3, 4, 5\).
Ví dụ 4
3 3 3 50
12 5 5
2 19 37
10 5 15
14
Lưu ý rằng có thể tồn tại các hương vị, các loại ốc quế hoặc các loại đồ phủ có cùng giá.
Ví dụ này thỏa mãn ràng buộc của các bài toán con \(3, 4, 5\).
Bản dịch tiếng Việt từ đề gốc tiếng Nhật của Ủy ban Olympic Tin học Nhật Bản. Đề gốc và bản dịch được cung cấp theo giấy phép CC BY-SA 4.0.
Một nhà hàng chuyên phục vụ các món ăn Bolivia có \(N\) đầu bếp, được đánh số từ \(1\) đến \(N\). Đầu bếp \(i\) (\(1 \le i \le N\)) có thể nấu món silpancho với độ ngon \(A_i\) và món pique macho với độ ngon \(B_i\).
Tuy nhiên, các đầu bếp rất có chính kiến nên có \(M\) cặp đầu bếp không hòa thuận với nhau. Cặp không hòa thuận thứ \(j\) (\(1 \le j \le M\)) gồm đầu bếp \(U_j\) và đầu bếp \(V_j\).
Khách đến nhà hàng dùng bữa theo cách sau:
Có \(Q\) khách đến nhà hàng, được đánh số từ \(1\) đến \(Q\).
Khách \(k\) (\(1 \le k \le Q\)) chọn cặp đầu bếp mang lại mức độ hài lòng cao thứ \(X_k\) trong số các cặp được phép chọn. Cụ thể, gọi mức độ hài lòng là \(S\), khách chọn cặp đầu bếp \(p\) và \(q\) (\(1 \le p < q \le N\)) có giá trị \(S \times N^2 + p \times N + q\) lớn thứ \(X_k\).
Cho thông tin về các đầu bếp và khách, hãy tính mức độ hài lòng của từng khách \(k\) (\(1 \le k \le Q\)).
Dữ liệu vào có dạng:
N M Q
A_1 A_2 ... A_N
B_1 B_2 ... B_N
U_1 V_1
U_2 V_2
...
U_M V_M
X_1 X_2 ... X_Q
In ra \(Q\) dòng. Dòng thứ \(k\) (\(1 \le k \le Q\)) chứa mức độ hài lòng của khách \(k\).
Ví dụ 1
4 2 4
2 7 3 5
4 3 4 8
1 3
2 4
1 2 3 4
13
13
11
11
Có \(4\) cặp đầu bếp được phép chọn, với mức độ hài lòng tương ứng như sau:
Do đó, với từng khách:
Ví dụ này thỏa mãn ràng buộc của các subtasks \(1,7,8\).
Ví dụ 2
4 3 1
3 6 5 4
1 1 1 1
1 2
2 3
2 4
1
6
Có \(3\) cặp đầu bếp được phép chọn, với mức độ hài lòng tương ứng như sau:
Khách \(1\) chọn cặp đầu bếp \(3\) và \(4\), nên có mức độ hài lòng \(6\).
Ví dụ này thỏa mãn ràng buộc của các subtasks \(1,3,4,5,6,7,8\).
Ví dụ 3
5 0 4
1 2 3 4 5
5 4 3 2 1
3 9 10 1
9
7
7
10
Ví dụ này thỏa mãn ràng buộc của các subtasks \(1,7,8\).
Ví dụ 4
13 12 10
2 28 28 60 48 77 63 92 13 71 36 91 87
85 7 64 15 55 92 66 91 83 35 49 22 61
2 9
8 13
7 11
9 11
8 12
5 12
4 7
11 12
10 12
4 11
1 5
3 8
49 21 46 13 20 41 6 33 24 7
121
169
129
174
169
137
183
148
169
183
Ví dụ này thỏa mãn ràng buộc của các subtasks \(1,7,8\).
Bản dịch tiếng Việt từ đề gốc tiếng Nhật của bài Intimate Chef, JOI 2024/2025, vòng loại thứ hai, bài 4 của Ủy ban Olympic Tin học Nhật Bản. Đề gốc và bản dịch được cung cấp theo giấy phép CC BY-SA 4.0.
Bitaro sống bên một hồ lớn hình tròn có chu vi \(L\). Nhà của Bitaro nằm tại một điểm trên bờ hồ. Gọi điểm cách nhà Bitaro một quãng đường \(x\) theo chiều kim đồng hồ dọc bờ hồ (\(0 \le x < L\)) là điểm \(x\). Hiện tại, một cuộc thi marathon quanh hồ đang được lên kế hoạch.
Bitaro nghe nói cuộc thi sẽ diễn ra như sau:
Bitaro có danh sách những người tham gia cuộc thi. Hiện tại danh sách có \(N\) người. Người thứ \(i\) (\(1 \le i \le N\)) dự định đeo số \(A_i\) và di chuyển quanh hồ theo chiều kim đồng hồ với vận tốc \(S_i\) đơn vị quãng đường mỗi giây.
Dựa trên danh sách, Bitaro đã tính số lần va chạm xảy ra trong cuộc thi. Một va chạm là việc hai người khác nhau có mặt tại cùng một điểm. Chính xác hơn, Bitaro đếm số bộ \((p,q,t)\), trong đó \(p,q\) là các số nguyên thỏa mãn \(0 \le p < q \le L-1\) và \(t\) là số thực thỏa mãn \(0 \le t \le T\), sao cho:
Tuy nhiên, sau đó danh sách được thay đổi \(Q\) lần. Thay đổi thứ \(j\) (\(1 \le j \le Q\)) được mô tả bởi hai số nguyên \(X_j,Y_j\) như sau:
Đảm bảo rằng sau mỗi lần thay đổi, danh sách có ít nhất \(2\) người và số đeo của tất cả những người trong danh sách đôi một khác nhau.
Bitaro muốn biết số lần va chạm sẽ xảy ra trong toàn bộ cuộc thi với danh sách người tham gia sau mỗi lần thay đổi. Từ các ràng buộc của bài toán, có thể chứng minh số lần va chạm trong cuộc thi là hữu hạn.
Cho thông tin về cuộc thi và các thay đổi của danh sách, hãy tính số lần va chạm trong cuộc thi với danh sách sau mỗi lần thay đổi, lấy phần dư khi chia cho \(1\,000\,000\,007\).
Dữ liệu vào có dạng:
N L T
A_1 A_2 ... A_N
S_1 S_2 ... S_N
Q
X_1 Y_1
X_2 Y_2
...
X_Q Y_Q
In ra \(Q\) dòng. Dòng thứ \(j\) (\(1 \le j \le Q\)) chứa phần dư khi chia số lần va chạm trong cuộc thi với danh sách người tham gia sau thay đổi thứ \(j\) cho \(1\,000\,000\,007\).
Ví dụ 1
3 7 2
1 6 3
4 1 6
1
4 2
7
Sau thay đổi thứ \(1\), có \(4\) người tham gia. Thông tin của từng người như sau:
Với danh sách này, trong cuộc thi xảy ra \(7\) va chạm sau:
Ví dụ này thỏa mãn ràng buộc của các subtasks \(2,3,4,5,6\).
Ví dụ 2
3 6 1
1 3 4
1 1 1
2
0 2
1 1
1
0
Sau thay đổi thứ \(1\), có \(4\) người tham gia. Thông tin của từng người như sau:
Với danh sách sau thay đổi thứ \(1\), trong cuộc thi xảy ra đúng \(1\) va chạm: tại thời điểm \(1\), người đeo số \(0\) và người đeo số \(1\) cùng ở điểm \(2\).
Sau thay đổi thứ \(2\), có \(3\) người tham gia. Thông tin của từng người như sau:
Với danh sách sau thay đổi thứ \(2\), số lần va chạm trong cuộc thi là \(0\).
Ví dụ này thỏa mãn ràng buộc của các subtasks \(1,3,5,6\).
Ví dụ 3
2 100000 993754689
58683 3478
28489 48682814
1
28482 39599461
9265409
Sau thay đổi thứ \(1\), có \(3\) người tham gia. Thông tin của từng người như sau:
Với danh sách này, số lần va chạm trong cuộc thi là \(967\,009\,272\,178\). Vì vậy, phần dư khi chia số lần va chạm cho \(1\,000\,000\,007\) là \(9\,265\,409\).
Ví dụ này thỏa mãn ràng buộc của các subtasks \(2,3,4,5,6\).
Ví dụ 4
7 100 100
34 12 46 23 57 63 99
12 34 23 12 34 12 23
5
67 34
99 23
33 34
99 12
23 12
330
264
341
440
341
Ví dụ này thỏa mãn ràng buộc của các subtasks \(3,5,6\).
Bản dịch tiếng Việt từ đề gốc tiếng Nhật của bài Collision, JOI 2024/2025, vòng loại thứ hai, bài 5 của Ủy ban Olympic Tin học Nhật Bản. Đề gốc và bản dịch được cung cấp theo giấy phép CC BY-SA 4.0.