| # | Bài tập | Điểm | Thời gian: | Giới hạn bộ nhớ |
|---|---|---|---|---|
| 1 | JOI 2021 - Growing Vegetables is Fun 4 | 100 (p) | 2.0s | 512M |
| 2 | JOI 2021 - Snowball | 100 (p) | 3.0s | 512M |
| 3 | JOI 2021 - Group Photo | 100 (p) | 4.0s | 512M |
| 4 | JOI 2021 - Robot | 100 (p) | 4.0s | 512M |
| 5 | JOI 2021 - Dungeon 3 | 100 (p) | 3.0s | 512M |
Bitaro thích làm vườn. Hiện cậu đang trồng một loại cây gọi là cỏ Biba trong vườn nhà. Có \(N\) cây cỏ Biba được trồng thành một hàng từ tây sang đông, đánh số từ \(1\) đến \(N\) theo thứ tự đó. Hiện tại, chiều cao của cây thứ \(i\) (\(1 \le i \le N\)) là \(A_i\).
Nhờ được cải tiến giống, mỗi lần được tưới nước, một cây cỏ Biba sẽ cao thêm \(1\) đơn vị. Để khu vườn trông đẹp hơn, Bitaro muốn tưới nước một số lần sao cho điều kiện sau được thỏa mãn:
Tuy nhiên, Bitaro vụng về nên mỗi lần chỉ có thể tưới đồng thời tất cả các cây trong một đoạn liên tiếp. Cụ thể, trong một lần tưới, cậu chọn hai số nguyên \(L,R\) (\(1 \le L \le R \le N\)) rồi tưới các cây \(L,L+1,\ldots,R\).
Cho số lượng cây cỏ Biba và chiều cao hiện tại của chúng, hãy tìm số lần tưới ít nhất để thỏa mãn điều kiện trên.
Dữ liệu được cho từ đầu vào chuẩn:
N
A_1 A_2 ... A_N
Tất cả các giá trị đầu vào đều là số nguyên.
In ra một dòng chứa số lần tưới ít nhất cần thực hiện.
Ví dụ 1
5
3 2 2 3 1
3
Có thể thỏa mãn điều kiện bằng ba lần tưới như sau:
Không thể thỏa mãn điều kiện bằng ít hơn ba lần tưới, nên đáp án là \(3\).
Ví dụ 2
5
9 7 5 3 1
0
Điều kiện đã được thỏa mãn ngay từ đầu, nên không cần tưới lần nào. Đáp án là \(0\).
Ví dụ 3
2
2021 2021
1
Có thể thỏa mãn điều kiện bằng một lần tưới: chọn \(L=1\), \(R=1\) để tưới cây \(1\), hoặc chọn \(L=2\), \(R=2\) để tưới cây \(2\).
Ví dụ 4
8
12 2 34 85 4 91 29 85
93
JOI 2020/2021, vòng chung kết quốc gia, ngày 14/02/2021. Đề gốc của Ủy ban Olympic Tin học Nhật Bản: tiếng Anh, tiếng Nhật. Bản dịch theo giấy phép CC BY-SA 4.0.
Đồng bằng JOI là một đồng bằng rất rộng trải dài từ tây sang đông. Có thể xem đồng bằng này là một trục số, với chiều dương hướng về phía đông. Mùa đông đã đến và trên đồng bằng có \(N\) quả cầu tuyết ở các tọa độ khác nhau. Các quả cầu được đánh số từ \(1\) đến \(N\) theo thứ tự từ tây sang đông. Ban đầu, quả cầu thứ \(i\) (\(1 \le i \le N\)) nằm tại tọa độ nguyên \(X_i\).
Vào mùa đông, gió trên đồng bằng JOI thổi rất mạnh. Bạn có dữ liệu quan sát gió trong \(Q\) ngày. Gió của ngày thứ \(j\) (\(1 \le j \le Q\)) được biểu diễn bởi số nguyên \(W_j\). Nếu \(W_j\) âm, gió thổi về phía tây; nếu \(W_j\) không âm, gió thổi về phía đông. Độ mạnh của gió là \(|W_j|\).
Khi gió thổi, mỗi quả cầu tuyết lăn cùng hướng với gió một quãng đường bằng độ mạnh của gió. Nói cách khác, nếu đầu ngày thứ \(j\) một quả cầu ở tọa độ \(x\), nó sẽ lăn từ \(x\) đến \(x+W_j\) và kết thúc ngày tại \(x+W_j\). Trong mỗi ngày, tất cả các quả cầu lăn đồng thời và cùng tốc độ.
Ban đầu, toàn bộ đồng bằng được phủ tuyết. Khi một quả cầu lăn qua một đoạn còn tuyết, tuyết bám vào quả cầu làm tăng khối lượng của nó, và tuyết trên đoạn đó biến mất. Cụ thể, với một số nguyên \(a\), nếu đoạn từ \(a\) đến \(a+1\) còn tuyết, khi một quả cầu lăn qua đoạn này, khối lượng của nó tăng \(1\) và tuyết trên đoạn đó biến mất. Nếu quả cầu lăn qua đoạn không còn tuyết, khối lượng của nó không đổi.
Ban đầu, khối lượng của mọi quả cầu đều bằng \(0\). Trong \(Q\) ngày quan sát không có tuyết mới rơi.
Cho tọa độ ban đầu của các quả cầu và dữ liệu gió trong \(Q\) ngày, hãy tính khối lượng của từng quả cầu vào cuối ngày thứ \(Q\).
Dữ liệu được cho từ đầu vào chuẩn:
N Q
X_1 X_2 ... X_N
W_1
...
W_Q
Tất cả các giá trị đầu vào đều là số nguyên.
In ra \(N\) dòng. Dòng thứ \(i\) (\(1 \le i \le N\)) chứa khối lượng của quả cầu thứ \(i\) vào cuối ngày thứ \(Q\).
Ví dụ 1
4 3
-2 3 5 8
2
-4
7
5
4
2
6
Tọa độ và khối lượng của các quả cầu từ \(1\) đến \(4\) thay đổi như sau:
Vì vậy, lần lượt in ra \(5,4,2,6\).
Ví dụ 2
1 4
1000000000000
1000000000000
-1000000000000
-1000000000000
-1000000000000
3000000000000
Ví dụ 3
10 10
-56 -43 -39 -31 -22 -5 0 12 18 22
-3
0
5
-4
-2
10
-13
-1
9
6
14
8
7
9
11
10
9
8
5
10
JOI 2020/2021, vòng chung kết quốc gia, ngày 14/02/2021. Đề gốc của Ủy ban Olympic Tin học Nhật Bản: tiếng Anh, tiếng Nhật. Bản dịch theo giấy phép CC BY-SA 4.0.
Vào ngày cuối của một trại huấn luyện, \(N\) người tham gia sẽ chụp ảnh tập thể. Họ được đánh số từ \(1\) đến \(N\) theo thứ tự chiều cao tăng dần. Chiều cao của người thứ \(h\) là \(h\) (\(1 \le h \le N\)).
Mọi người đứng trên một cầu thang để chụp ảnh. Cầu thang có đúng \(N\) bậc, đánh số từ \(1\) đến \(N\) từ thấp lên cao. Bậc \(i+1\) cao hơn bậc \(i\) đúng \(2\) đơn vị (\(1 \le i < N\)). Cầu thang rất hẹp nên mỗi bậc chỉ có một người đứng, tạo thành một hàng dọc.
Buổi chụp ảnh sắp bắt đầu. Hiện tại, người thứ \(H_i\) đang đứng trên bậc \(i\) (\(1 \le i \le N\)).
Do chiều cao của mọi người chênh lệch nhiều, một số người có thể bị người khác che khuất trong ảnh. Bạn muốn sắp xếp lại vị trí để ít nhất phần đỉnh đầu của mọi người đều xuất hiện trong ảnh. Cụ thể, cần thỏa mãn điều kiện:
Bạn chỉ được đổi chỗ hai người đứng ở hai bậc liên tiếp. Trong một thao tác, chọn một bậc \(i\) (\(1 \le i < N\)), rồi đổi chỗ người trên bậc \(i\) với người trên bậc \(i+1\).
Cho thứ tự hiện tại của mọi người, hãy tìm số thao tác ít nhất để thỏa mãn điều kiện trên.
Dữ liệu được cho từ đầu vào chuẩn:
N
H_1 H_2 ... H_N
Tất cả các giá trị đầu vào đều là số nguyên.
In ra một dòng chứa số thao tác ít nhất cần thực hiện.
Ví dụ 1
5
3 5 2 4 1
3
Có thể thực hiện ba thao tác như sau:
Không thể thỏa mãn điều kiện bằng ít hơn ba thao tác, nên in ra \(3\).
Ví dụ 2
5
3 2 1 5 4
0
Điều kiện đã được thỏa mãn nên không cần thực hiện thao tác nào.
Ví dụ 3
9
6 1 3 4 9 5 7 8 2
9
JOI 2020/2021, vòng chung kết quốc gia, ngày 14/02/2021. Đề gốc của Ủy ban Olympic Tin học Nhật Bản: tiếng Anh, tiếng Nhật. Bản dịch theo giấy phép CC BY-SA 4.0.
Thị trấn IOI có \(N\) giao lộ, đánh số từ \(1\) đến \(N\), và \(M\) con đường, đánh số từ \(1\) đến \(M\). Mỗi con đường nối hai giao lộ khác nhau và có thể đi theo cả hai chiều. Đường thứ \(i\) (\(1 \le i \le M\)) nối giao lộ \(A_i\) với giao lộ \(B_i\). Không có hai con đường khác nhau nối cùng một cặp giao lộ.
Mỗi đường được sơn một màu, biểu diễn bằng một số nguyên từ \(1\) đến \(M\). Hiện tại, màu của đường thứ \(i\) là \(C_i\). Nhiều đường có thể có cùng màu.
Công ty JOI đã phát triển một robot di chuyển giữa các giao lộ của thị trấn IOI. Khi bạn chỉ định một màu, robot đi theo đường có màu đó tới giao lộ kề bên. Tuy nhiên, nếu tại giao lộ hiện tại có từ hai đường mang màu được chỉ định trở lên, robot không thể xác định phải đi đường nào và sẽ dừng lại.
Robot hiện ở giao lộ \(1\). Bạn muốn đưa robot tới giao lộ \(N\) bằng cách chỉ định màu một số lần. Vì các màu hiện tại có thể không cho phép làm điều đó, bạn được sơn lại một số con đường trước khi robot di chuyển. Với chi phí \(P_i\) yên, có thể sơn lại đường thứ \(i\) thành một màu bất kỳ từ \(1\) đến \(M\).
Cho thông tin về các giao lộ và con đường, hãy tìm tổng chi phí nhỏ nhất. Nếu dù sơn lại các đường như thế nào cũng không thể đưa robot tới giao lộ \(N\), hãy in ra \(-1\).
Dữ liệu được cho từ đầu vào chuẩn:
N M
A_1 B_1 C_1 P_1
...
A_M B_M C_M P_M
Tất cả các giá trị đầu vào đều là số nguyên.
In ra một dòng chứa tổng chi phí nhỏ nhất. Nếu không thể đưa robot tới giao lộ \(N\) dù sơn lại các đường như thế nào, in ra \(-1\).
Ví dụ 1
4 6
1 4 4 4
3 4 1 3
1 3 4 4
2 4 3 1
2 3 3 2
1 2 4 2
3
Sơn lại đường \(4\) từ màu \(3\) sang màu \(4\) với chi phí \(1\) yên. Sơn lại đường \(6\) từ màu \(4\) sang màu \(2\) với chi phí \(2\) yên. Tổng chi phí là \(3\) yên.
Sau đó, chỉ định màu \(2\) để robot đi từ giao lộ \(1\) tới giao lộ \(2\). Tiếp theo, chỉ định màu \(4\) để robot đi tới giao lộ \(4\).
Không thể đưa robot tới giao lộ \(4\) với chi phí nhỏ hơn \(3\) yên, nên in ra \(3\).
Ví dụ 2
5 2
1 4 1 2
3 5 1 4
-1
Dù sơn lại các đường như thế nào cũng không thể đưa robot tới giao lộ \(5\), nên in ra \(-1\).
Ví dụ 3
5 7
2 3 7 1
1 4 5 1
4 5 3 1
3 4 7 1
2 4 3 1
3 5 6 1
1 2 5 1
1
Ví dụ này thỏa mãn ràng buộc của nhóm \(2\).
Ví dụ 4
13 21
7 10 4 4
3 6 4 7
8 10 4 5
3 9 2 5
1 4 4 5
2 6 4 2
3 11 2 2
3 8 16 2
8 11 16 1
6 10 4 14
6 8 16 6
9 12 16 5
5 13 4 6
1 12 4 7
2 4 4 18
2 9 4 10
2 12 4 6
10 13 4 28
5 7 2 5
5 11 2 16
7 13 4 20
7
JOI 2020/2021, vòng chung kết quốc gia, ngày 14/02/2021. Đề gốc của Ủy ban Olympic Tin học Nhật Bản: tiếng Anh, tiếng Nhật. Bản dịch theo giấy phép CC BY-SA 4.0.
Có một hầm ngục gồm \(N+1\) tầng và \(M\) người chơi bên trong. Các tầng được đánh số từ \(1\) đến \(N+1\) theo thứ tự từ gần cửa vào nhất. Những người chơi được đánh số từ \(1\) đến \(M\).
Để đi từ tầng \(i\) sang tầng \(i+1\) (\(1 \le i \le N\)), người chơi phải tiêu hao \(A_i\) đơn vị năng lượng. Hầm ngục chỉ cho phép đi một chiều: chỉ có thể di chuyển từ tầng \(i\) sang tầng \(i+1\).
Trên mỗi tầng từ \(1\) đến \(N\) có một suối hồi phục. Tại suối ở tầng \(i\), người chơi có thể trả \(B_i\) đồng xu để hồi phục \(1\) đơn vị năng lượng. Có thể sử dụng suối nhiều lần miễn là có đủ xu. Tuy nhiên, mỗi người chơi có một giới hạn năng lượng riêng, và năng lượng không được vượt quá giới hạn đó kể cả khi sử dụng suối hồi phục.
Người chơi thứ \(j\) (\(1 \le j \le M\)) hiện ở tầng \(S_j\), có năng lượng hiện tại bằng \(0\) và giới hạn năng lượng là \(U_j\). Người này muốn tới tầng \(T_j\) mà năng lượng không bao giờ nhỏ hơn \(0\) trên đường đi.
Cho thông tin về hầm ngục và những người chơi, với mỗi người hãy xác định có thể tới tầng đích hay không. Nếu có thể, hãy tìm số đồng xu ít nhất cần dùng.
Dữ liệu được cho từ đầu vào chuẩn:
N M
A_1 A_2 ... A_N
B_1 B_2 ... B_N
S_1 T_1 U_1
...
S_M T_M U_M
Tất cả các giá trị đầu vào đều là số nguyên.
In ra \(M\) dòng. Dòng thứ \(j\) (\(1 \le j \le M\)) chứa số đồng xu ít nhất mà người chơi thứ \(j\) cần để tới tầng \(T_j\). Nếu người đó không thể tới tầng \(T_j\), in ra \(-1\).
Ví dụ 1
5 4
3 4 1 1 4
2 5 1 2 1
1 6 3
1 6 4
3 5 1
2 5 9
-1
29
3
22
Người chơi \(1\) có giới hạn năng lượng là \(3\), nên không thể đi từ tầng \(2\) tới tầng \(3\). Vì vậy, dòng đầu tiên là \(-1\).
Người chơi \(2\) có giới hạn năng lượng là \(4\) và có thể tới tầng \(6\) như sau:
Tổng cộng cần \(29\) xu. Không thể tới tầng \(6\) với ít hơn \(29\) xu, nên dòng thứ hai là \(29\).
Ví dụ 2
10 10
1 8 9 8 1 5 7 10 6 6
10 10 2 8 10 3 9 8 3 7
2 11 28
5 11 28
7 11 28
1 11 18
3 11 18
8 11 18
4 11 11
6 11 11
10 11 11
9 11 5
208
112
179
248
158
116
234
162
42
-1
Ví dụ này thỏa mãn ràng buộc của nhóm \(3\).
Ví dụ 3
20 20
2 3 2 11 4 6 9 15 17 14 8 17 3 12 20 4 19 8 4 5
19 3 18 2 13 7 5 19 10 1 12 8 1 15 20 1 13 2 18 6
12 15 67
7 15 18
16 17 14
9 21 97
1 19 43
3 18 31
16 20 70
7 20 28
1 16 61
3 5 69
9 10 15
2 13 134
11 19 23
16 20 14
5 21 16
15 20 11
7 11 54
7 16 16
13 17 10
3 15 135
151
591
4
284
339
517
35
581
254
58
-1
178
519
-1
-1
-1
219
-1
-1
214
JOI 2020/2021, vòng chung kết quốc gia, ngày 14/02/2021. Đề gốc của Ủy ban Olympic Tin học Nhật Bản: tiếng Anh, tiếng Nhật. Bản dịch theo giấy phép CC BY-SA 4.0.