| # | Bài tập | Điểm | Thời gian: | Giới hạn bộ nhớ |
|---|---|---|---|---|
| 1 | JOI 2022 - Library 2 | 100 (p) | 2.0s | 1G |
| 2 | JOI 2022 - Carpet | 100 (p) | 2.0s | 1G |
| 3 | JOI 2022 - Land Division | 100 (p) | 1.0s | 1G |
| 4 | JOI 2022 - Candies 2 | 100 (p) | 2.0s | 1G |
| 5 | JOI 2022 - Trade Plan | 100 (p) | 4.0s | 1G |
Bitaro thích đọc sách và quyết định mượn sách ở thư viện. Nhà của Bitaro khá chật, nên trên sàn chỉ có một khoảng trống đủ đặt một quyển sách. Tuy nhiên, phía trên có đủ chỗ, vì vậy Bitaro quyết định xếp các quyển sách chồng lên nhau tại khoảng trống này.
Bitaro sẽ thực hiện \(Q\) hành động. Hành động thứ \(i\) (\(1 \le i \le Q\)) được biểu diễn bởi xâu \(S_i\). Xâu \(S_i\) chỉ gồm các chữ cái tiếng Anh viết thường hoặc là READ, với ý nghĩa như sau:
READ, Bitaro đọc quyển sách trên cùng của chồng sách rồi trả quyển đó cho thư viện.Bạn muốn biết Bitaro đã đọc những quyển sách nào và theo thứ tự nào. Cho thông tin về \(Q\) hành động, hãy in ra tên các quyển sách mà Bitaro đã đọc, theo đúng thứ tự đọc.
Dữ liệu vào có dạng:
Q
S_1
S_2
...
S_Q
Với mỗi hành động có \(S_i\) là READ, in ra tên quyển sách mà Bitaro đọc trong hành động đó. In các tên theo đúng thứ tự đọc, mỗi tên trên một dòng.
READ (\(1 \le i \le Q\)).READ.READ, chồng sách luôn có ít nhất một quyển (\(1 \le i \le Q\)).Ví dụ 1
7
joi
joig
ioi
READ
egoi
READ
READ
ioi
egoi
joig
Bitaro thực hiện các hành động như sau:
joi vào khoảng trống. Chồng sách lúc này chỉ có joi.joig lên trên. Các quyển sách từ trên xuống là joig, joi.ioi lên trên. Các quyển sách từ trên xuống là ioi, joig, joi.ioi. Các quyển sách từ trên xuống còn lại là joig, joi.egoi lên trên. Các quyển sách từ trên xuống là egoi, joig, joi.egoi. Các quyển sách từ trên xuống còn lại là joig, joi.joig. Chồng sách chỉ còn joi.Vì vậy, in ra các tên sách ioi, egoi, joig theo thứ tự này, mỗi tên trên một dòng.
Ví dụ này thỏa mãn ràng buộc của tất cả các subtasks.
Ví dụ 2
20
one
READ
two
three
four
five
six
seven
READ
eight
nine
READ
ten
eleven
READ
READ
twelve
READ
READ
READ
one
seven
nine
eleven
ten
twelve
eight
six
Ví dụ này thỏa mãn ràng buộc của tất cả các subtasks.
Đề bài Library 2, JOI 2021/2022, vòng loại thứ hai, bài 1 của Ủy ban Olympic Tin học Nhật Bản. Đề gốc và bản dịch tiếng Việt được cung cấp theo giấy phép CC BY-SA 4.0.
Bitaro thích những đồ vật đẹp và vừa mua một tấm thảm mới. Tấm thảm có hình chữ nhật, được chia thành \(H\) hàng và \(W\) cột ô vuông. Mỗi ô được tô màu trắng hoặc đen. Ô ở hàng thứ \(i\) từ trên xuống và cột thứ \(j\) từ trái sang (\(1 \le i \le H\), \(1 \le j \le W\)) có màu trắng nếu ký tự thứ \(j\) của xâu \(S_i\) là ., và có màu đen nếu ký tự đó là #.
Bitaro nghĩ ra một trò chơi: đặt một quân cờ ở ô trên cùng bên trái của tấm thảm, rồi thực hiện thao tác sau một số lần để đưa quân cờ đến ô dưới cùng bên phải:
Bitaro muốn thực hiện ít thao tác nhất có thể. Tuy nhiên, tùy theo hoa văn của tấm thảm, có thể không đưa được quân cờ đến đích.
Cho hoa văn của tấm thảm, hãy xác định liệu có thể đưa quân cờ từ ô trên cùng bên trái đến ô dưới cùng bên phải bằng cách lặp lại thao tác trên hay không. Nếu có thể, hãy tìm số thao tác ít nhất.
Dữ liệu vào có dạng:
H W
S_1
S_2
...
S_H
In ra một dòng chứa số thao tác ít nhất nếu có thể đưa quân cờ từ ô trên cùng bên trái đến ô dưới cùng bên phải. Nếu không thể, in ra \(-1\).
. hoặc # (\(1 \le i \le H\)).Ví dụ 1
4 5
...#.
#####
...#.
#.###
9
Chẳng hạn, có thể di chuyển quân cờ theo hai cách trong hình sau:
Cách bên trái đưa quân cờ từ ô trên cùng bên trái đến ô dưới cùng bên phải sau \(9\) thao tác, còn cách bên phải cần \(13\) thao tác. Không thể đến đích với ít hơn \(9\) thao tác, nên in ra \(9\).
Ví dụ này thỏa mãn ràng buộc của các subtasks \(2,3,4\).
Ví dụ 2
3 3
...
...
...
-1
Có trường hợp không thể thực hiện thao tác nào ngay từ đầu. Trong ví dụ này, không thể đưa quân cờ đến ô dưới cùng bên phải, nên in ra \(-1\).
Ví dụ này thỏa mãn ràng buộc của các subtasks \(2,3,4\).
Ví dụ 3
1 5
.#.#.
4
Ví dụ này thỏa mãn ràng buộc của tất cả các subtasks.
Ví dụ 4
5 5
###.#
.#...
.#..#
.####
##..#
12
Ví dụ này thỏa mãn ràng buộc của các subtasks \(2,3,4\).
Ví dụ 5
7 5
.#.##
##...
.#.##
.###.
##.#.
...#.
##.#.
12
Ví dụ này thỏa mãn ràng buộc của các subtasks \(3,4\).
Đề bài Carpet, JOI 2021/2022, vòng loại thứ hai, bài 2 của Ủy ban Olympic Tin học Nhật Bản. Đề gốc và bản dịch tiếng Việt được cung cấp theo giấy phép CC BY-SA 4.0.
Đất nước JOI có hình chữ nhật, được chia thành \(H\) hàng và \(W\) cột ô vuông. Chiều dọc của đất nước song song với hướng bắc–nam, còn chiều ngang song song với hướng đông–tây. Ô ở hàng thứ \(i\) tính từ phía bắc (\(1 \le i \le H\)) và cột thứ \(j\) tính từ phía tây (\(1 \le j \le W\)) có dân số là \(A_{i,j}\) người.
Để việc quản lý hiệu quả hơn, đất nước JOI quyết định chia toàn bộ lãnh thổ thành ít nhất hai khu vực bằng cách kẻ ít nhất một đường ranh giới. Mỗi đường ranh giới phải thỏa mãn cả hai điều kiện sau:
Cho dân số của từng ô, hãy đếm số cách chia sao cho tất cả các khu vực đều có dân số bằng nhau.
Dữ liệu vào có dạng:
H W
A_1,1 A_1,2 ... A_1,W
A_2,1 A_2,2 ... A_2,W
...
A_H,1 A_H,2 ... A_H,W
In ra một dòng chứa số cách chia sao cho tất cả các khu vực đều có dân số bằng nhau.
Ví dụ 1
2 3
10 10 20
10 10 20
3
Ví dụ 2
1 4
2 1 1 2
2
Ví dụ 3
3 3
2 9 4
7 5 3
6 1 8
2
Ví dụ 4
1 1
10000
0
Không có cách chia nào để tất cả các khu vực có dân số bằng nhau, nên in ra \(0\).
Ví dụ này thỏa mãn ràng buộc của tất cả các subtasks.
Đề bài Land Division, JOI 2021/2022, vòng loại thứ hai, bài 3 của Ủy ban Olympic Tin học Nhật Bản. Đề gốc và bản dịch tiếng Việt được cung cấp theo giấy phép CC BY-SA 4.0.
Trên bàn có \(N\) viên kẹo xếp thành một hàng ngang, được đánh số từ \(1\) đến \(N\) theo thứ tự từ trái sang phải. Viên kẹo \(i\) (\(1 \le i \le N\)) có độ ngon là \(A_i\).
JOI quyết định chọn một số viên trong \(N\) viên kẹo để ăn. Tuy nhiên, để không ăn quá nhiều, trong bất kỳ \(K\) viên kẹo liên tiếp nào, JOI chỉ được ăn nhiều nhất \(2\) viên. Cụ thể, với mọi \(j\) (\(1 \le j \le N-K+1\)), số viên được ăn trong các viên từ \(j\) đến \(j+K-1\) phải không vượt quá \(2\).
Với điều kiện đó, JOI muốn tổng độ ngon của các viên kẹo được ăn lớn nhất có thể. Cho độ ngon của \(N\) viên kẹo và giá trị \(K\), hãy tìm tổng độ ngon lớn nhất mà JOI có thể đạt được.
Dữ liệu vào có dạng:
N K
A_1 A_2 ... A_N
In ra một dòng chứa tổng độ ngon lớn nhất của các viên kẹo mà JOI có thể ăn.
Ví dụ 1
5 4
1 3 2 4 3
8
Nếu JOI ăn các viên kẹo \(1,4,5\), tổng độ ngon là \(8\).
Không có cách chọn nào vừa bảo đảm trong bất kỳ \(4\) viên kẹo liên tiếp nào cũng ăn nhiều nhất \(2\) viên, vừa có tổng độ ngon từ \(9\) trở lên. Vì vậy, in ra \(8\).
Ví dụ này thỏa mãn ràng buộc của tất cả các subtasks.
Ví dụ 2
6 3
3 7 1 5 6 4
21
Nếu JOI ăn các viên kẹo \(1,2,4,5\), tổng độ ngon là \(21\).
Không có cách chọn nào vừa bảo đảm trong bất kỳ \(3\) viên kẹo liên tiếp nào cũng ăn nhiều nhất \(2\) viên, vừa có tổng độ ngon từ \(22\) trở lên. Vì vậy, in ra \(21\).
Ví dụ này thỏa mãn ràng buộc của tất cả các subtasks.
Ví dụ 3
5 2
3 3 2 2 1
11
Ví dụ này thỏa mãn ràng buộc của tất cả các subtasks.
Ví dụ 4
12 5
864814169 716638377 926889183 891468826 217138351 891972397 504371916 678159995 435478604 181254225 760822841 688502728
4427122428
Ví dụ này thỏa mãn ràng buộc của tất cả các subtasks.
Đề bài Candies 2, JOI 2021/2022, 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 tiếng Việt được cung cấp theo giấy phép CC BY-SA 4.0.
Hợp chúng quốc JOI có \(N\) thành phố được đánh số từ \(1\) đến \(N\) và \(M\) con đường được đánh số từ \(1\) đến \(M\). Đường \(i\) (\(1 \le i \le M\)) nối hai chiều giữa thành phố \(U_i\) và thành phố \(V_i\).
Quốc gia này gồm \(K\) bang, được đánh số từ \(1\) đến \(K\). Thành phố \(j\) (\(1 \le j \le N\)) thuộc bang \(S_j\). Mỗi bang có ít nhất một thành phố.
Chủ tịch K, Bộ trưởng Công nghiệp của Hợp chúng quốc JOI, muốn thực hiện \(Q\) chuyến giao thương. Trong chuyến thứ \(k\) (\(1 \le k \le Q\)), đặc sản được vận chuyển từ thành phố \(A_k\) đến thành phố \(B_k\) qua một số con đường và thành phố. Tuy nhiên, chỉ bang \(S_{A_k}\) và bang \(S_{B_k}\) đồng ý hợp tác; nếu \(S_{A_k}=S_{B_k}\) thì chỉ có bang đó hợp tác. Nếu đi qua một thành phố không thuộc các bang hợp tác, đặc sản sẽ bị đánh cắp.
Chủ tịch K muốn biết có lộ trình nào để thực hiện chuyến giao thương mà không bị đánh cắp đặc sản hay không. Cho thông tin về các thành phố, đường đi, bang và các chuyến giao thương, hãy xác định với từng chuyến liệu có thể vận chuyển đặc sản đến nơi an toàn hay không.
Dữ liệu vào có dạng:
N M K
U_1 V_1
U_2 V_2
...
U_M V_M
S_1 S_2 ... S_N
Q
A_1 B_1
A_2 B_2
...
A_Q B_Q
In ra \(Q\) dòng. Dòng thứ \(k\) (\(1 \le k \le Q\)) chứa \(1\) nếu có thể vận chuyển đặc sản đến nơi an toàn trong chuyến giao thương thứ \(k\), hoặc \(0\) nếu không thể.
Ví dụ 1
4 3 2
1 2
2 3
3 4
1 2 1 2
3
1 2
1 3
1 4
1
0
1
Trong chuyến thứ \(1\), đặc sản cần được vận chuyển từ thành phố \(1\) đến thành phố \(2\), chỉ qua các thành phố thuộc bang \(1\) hoặc bang \(2\). Lộ trình \(1 \to 2\) thỏa mãn điều kiện, nên in ra \(1\).
Trong chuyến thứ \(2\), đặc sản cần được vận chuyển từ thành phố \(1\) đến thành phố \(3\), chỉ qua các thành phố thuộc bang \(1\). Không có lộ trình nào thỏa mãn điều kiện, nên in ra \(0\).
Trong chuyến thứ \(3\), đặc sản cần được vận chuyển từ thành phố \(1\) đến thành phố \(4\), chỉ qua các thành phố thuộc bang \(1\) hoặc bang \(2\). Lộ trình \(1 \to 2 \to 3 \to 4\) thỏa mãn điều kiện, nên in ra \(1\).
Ví dụ này thỏa mãn ràng buộc của các subtasks \(1,3,4\).
Ví dụ 2
4 2 1
1 3
2 4
1 1 1 1
4
1 2
1 3
2 3
2 4
0
1
0
1
Ví dụ này thỏa mãn ràng buộc của các subtasks \(1,3,4\).
Ví dụ 3
6 5 3
1 2
3 4
5 6
1 4
3 5
1 1 2 2 3 3
4
1 4
1 5
3 6
4 3
1
0
1
1
Ví dụ này thỏa mãn ràng buộc của tất cả các subtasks.
Ví dụ 4
8 11 3
4 8
1 8
4 6
3 5
2 4
7 8
6 7
3 4
1 4
2 3
3 8
2 3 1 1 2 1 2 1
10
8 2
8 1
2 7
5 3
5 7
4 8
1 8
6 8
6 5
1 8
1
1
0
1
0
1
1
1
1
1
Ví dụ này thỏa mãn ràng buộc của các subtasks \(1,3,4\).
Đề bài Trade Plan, JOI 2021/2022, 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 tiếng Việt được cung cấp theo giấy phép CC BY-SA 4.0.