| # | Bài tập | Điểm | Thời gian: | Giới hạn bộ nhớ |
|---|---|---|---|---|
| 1 | JOI 2024 - Card Game 2 | 100 (p) | 2.0s | 1G |
| 2 | JOI 2024 - Shopping 2 | 100 (p) | 2.0s | 1G |
| 3 | JOI 2024 - White Light 2 | 100 (p) | 1.0s | 1G |
| 4 | JOI 2024 - Garden 2 | 100 (p) | 4.0s | 1G |
| 5 | JOI 2024 - Highway Tolls | 100 (p) | 4.0s | 1G |
Bitaro có \(N\) lá bài. Trên lá bài thứ \(i\) (\(1 \le i \le N\)) có ghi số nguyên \(A_i\). Bitaro muốn chọn ba lá bài sao cho các số ghi trên chúng cách nhau \(3\) đơn vị. Chính xác hơn, ba số được chọn phải có dạng \(x, x+3, x+6\) với một số nguyên \(x\) nào đó.
Chẳng hạn, nếu Bitaro có năm lá bài ghi các số \(2, 4, 5, 7, 10\), thì chọn các lá bài ghi \(4, 7, 10\) sẽ thỏa mãn điều kiện.
Cho thông tin về các lá bài của Bitaro, hãy viết chương trình xác định có thể chọn ba lá bài thỏa mãn điều kiện trên hay không.
Dòng thứ nhất chứa số nguyên \(N\).
Dòng thứ hai chứa \(N\) số nguyên \(A_1, A_2, \ldots, A_N\), cách nhau bởi dấu cách.
Nếu có thể chọn ba lá bài thỏa mãn điều kiện, in ra Yes; ngược lại, in ra No.
Mọi phân nhóm đều thỏa mãn các ràng buộc chung ở trên.
Ví dụ 1
3
2 5 8
Yes
Chọn các lá bài ghi \(2, 5, 8\) thì thỏa mãn điều kiện. Vì vậy, in ra Yes.
Ví dụ này thỏa mãn các ràng buộc của các phân nhóm \(1, 3, 4\).
Ví dụ 2
4
1 4 6 4
No
Không thể chọn các lá bài thỏa mãn điều kiện. Vì vậy, in ra No.
Ví dụ này thỏa mãn các ràng buộc của các phân nhóm \(2, 3, 4\).
Ví dụ 3
8
9 8 11 1 1 6 10 4
No
Không thể chọn các lá bài thỏa mãn điều kiện. Vì vậy, in ra No.
Ví dụ này thỏa mãn các ràng buộc của các phân nhóm \(3, 4\).
Ví dụ 4
20
2 15 4 30 6 8 11 27 14 3 16 26 19 2 23 21 18 13 28 6
Yes
Chọn các lá bài ghi \(15, 18, 21\) thì thỏa mãn điều kiện. Vì vậy, in ra Yes.
Ví dụ này thỏa mãn các ràng buộc của các phân nhóm \(3, 4\).
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.
Cửa hàng JOI có \(N\) mặt hàng, được đánh số từ \(1\) đến \(N\). Mỗi mặt hàng có một giá niêm yết và một loại. Mặt hàng \(i\) (\(1 \le i \le N\)) có giá niêm yết \(P_i\) yên và thuộc loại \(A_i\). Các loại được biểu diễn bằng các số nguyên từ \(1\) đến \(M\).
Cửa hàng JOI tổ chức một đợt giảm giá kéo dài \(M\) ngày. Vào ngày thứ \(j\) (\(1 \le j \le M\)), mọi mặt hàng thuộc loại \(j\) đều được bán với giá bằng một nửa giá niêm yết.
Trong đợt giảm giá, có \(Q\) khách hàng đến cửa hàng, được đánh số từ \(1\) đến \(Q\). Khách hàng \(k\) (\(1 \le k \le Q\)) đến vào ngày thứ \(T_k\) và mua mỗi mặt hàng \(L_k, L_k+1, \ldots, R_k\) một đơn vị.
Để đánh giá hiệu quả của đợt giảm giá, cửa hàng muốn biết số tiền mỗi khách hàng đã chi. Cho thông tin về các mặt hàng và khách hàng, hãy viết chương trình tính số tiền mỗi khách hàng phải trả.
Dòng thứ nhất chứa ba số nguyên \(N, M, Q\).
Trong \(N\) dòng tiếp theo, dòng thứ \(i\) chứa hai số nguyên \(P_i, A_i\).
Trong \(Q\) dòng tiếp theo, dòng thứ \(k\) chứa ba số nguyên \(T_k, L_k, R_k\). Các giá trị trên cùng một dòng được cách nhau bởi dấu cách.
In ra \(Q\) dòng. Dòng thứ \(k\) (\(1 \le k \le Q\)) chứa số tiền khách hàng \(k\) phải trả, không kèm đơn vị yên.
Mọi phân nhóm đều thỏa mãn các ràng buộc chung ở trên.
Ví dụ 1
5 1 3
10 1
40 1
30 1
20 1
50 1
1 2 4
1 3 5
1 1 5
45
50
75
Khách hàng \(1\) phải trả \(40 \div 2 + 30 \div 2 + 20 \div 2 = 45\) yên, nên dòng thứ nhất in ra \(45\).
Khách hàng \(2\) phải trả \(30 \div 2 + 20 \div 2 + 50 \div 2 = 50\) yên, nên dòng thứ hai in ra \(50\).
Khách hàng \(3\) phải trả \(10 \div 2 + 40 \div 2 + 30 \div 2 + 20 \div 2 + 50 \div 2 = 75\) yên, nên dòng thứ ba in ra \(75\).
Ví dụ này thỏa mãn các ràng buộc của các phân nhóm \(1, 2, 3, 6\).
Ví dụ 2
5 3 3
10 1
40 3
30 2
20 1
50 3
1 2 4
3 3 5
2 1 5
80
75
135
Khách hàng \(1\) phải trả \(40 + 30 + 20 \div 2 = 80\) yên, nên dòng thứ nhất in ra \(80\).
Khách hàng \(2\) phải trả \(30 + 20 + 50 \div 2 = 75\) yên, nên dòng thứ hai in ra \(75\).
Khách hàng \(3\) phải trả \(10 + 40 + 30 \div 2 + 20 + 50 = 135\) yên, nên dòng thứ ba in ra \(135\).
Ví dụ này thỏa mãn các ràng buộc của các phân nhóm \(1, 3, 6\).
Ví dụ 3
5 5 3
50 2
70 4
20 5
30 1
10 3
4 2 4
5 1 5
2 3 4
85
170
50
Ví dụ này thỏa mãn các ràng buộc của các phân nhóm \(1, 3, 4, 6\).
Ví dụ 4
10 5 4
2 1
2 5
2 4
2 3
2 4
2 2
2 2
2 4
2 2
2 1
3 2 7
1 1 7
2 1 10
5 5 8
11
13
17
8
Ví dụ này thỏa mãn các ràng buộc của các phân nhóm \(1, 3, 5, 6\).
Ví dụ 5
10 10 10
741703628 7
231838922 5
920286164 3
763741914 5
246151406 7
54109256 1
966457488 5
441379880 10
458514202 2
224373612 1
5 5 10
2 2 7
1 9 9
1 3 4
9 4 6
1 1 7
9 4 7
4 8 8
7 5 9
1 4 5
1907757100
3182585150
458514202
1684028078
1064002576
3897234150
2030460064
441379880
2043536529
1009893320
Ví dụ này thỏa mãn các ràng buộc của các phân nhóm \(1, 3, 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.
Có \(N\) bóng đèn xếp thành một hàng ngang, được đánh số từ \(1\) đến \(N\) từ trái sang phải. Mỗi bóng đèn có màu đỏ, xanh lá hoặc xanh dương. Màu của các bóng đèn được biểu diễn bằng xâu \(S\): bóng đèn \(i\) (\(1 \le i \le N\)) có màu đỏ nếu ký tự thứ \(i\) của \(S\) là R, màu xanh lá nếu là G, và màu xanh dương nếu là B. Ban đầu, tất cả các bóng đèn đều sáng.
Khi vẫn còn ít nhất một bóng đèn sáng, JOI có thể thực hiện ba loại thao tác sau theo thứ tự tùy ý và với số lần tùy ý. JOI cũng có thể không thực hiện thao tác nào.
JOI muốn khi nhìn hàng đèn từ xa, chúng trông có màu trắng đẹp mắt. Để làm được điều đó, dãy màu của các bóng đèn còn sáng, xét từ trái sang phải, phải là các lần lặp trọn vẹn của RGB (đỏ, xanh lá, xanh dương), có dạng RGBRGB...RGB. Nếu không còn bóng đèn nào sáng thì cũng được xem là một dãy lặp của RGB. Lưu ý rằng các dãy như GBRGBR hoặc RGBRG không thỏa mãn điều kiện.
Cho thông tin về hàng đèn và chi phí các thao tác, hãy viết chương trình tìm số tiền ít nhất cần trả để dãy màu của các bóng đèn còn sáng là một dãy lặp của RGB.
Dòng thứ nhất chứa số nguyên \(N\).
Dòng thứ hai chứa xâu \(S\).
Dòng thứ ba chứa ba số nguyên \(A, B, C\), cách nhau bởi dấu cách.
In ra trên một dòng số tiền ít nhất cần trả để dãy màu của các bóng đèn còn sáng là một dãy lặp của RGB, không kèm đơn vị yên.
R, G hoặc B.Mọi phân nhóm đều thỏa mãn các ràng buộc chung ở trên.
Ví dụ 1
6
GRBBRG
3 4 5
16
Chẳng hạn, có thể thực hiện bốn thao tác sau để dãy màu của các bóng đèn còn sáng là một dãy lặp của RGB. Ký hiệu - biểu diễn một bóng đèn đã tắt.
-RBBRG.-RBBR-.-RBB--.-RGB--.Không thể đạt được yêu cầu với chi phí nhỏ hơn \(16\) yên, nên in ra \(16\).
Ví dụ này thỏa mãn các ràng buộc của các phân nhóm \(2, 3, 6\).
Ví dụ 2
3
BRG
1000000000 1000000000 1
3
Chẳng hạn, có thể thực hiện ba thao tác sau để dãy màu của các bóng đèn còn sáng là một dãy lặp của RGB. Ký hiệu - biểu diễn một bóng đèn đã tắt.
BGG.BGB.RGB.Không thể đạt được yêu cầu với chi phí nhỏ hơn \(3\) yên, nên in ra \(3\).
Ví dụ này thỏa mãn các ràng buộc của các phân nhóm \(1, 2, 3, 4, 5, 6\).
Ví dụ 3
3
GRB
9 11 14
27
Chẳng hạn, có thể thực hiện ba thao tác sau để dãy màu của các bóng đèn còn sáng là một dãy lặp của RGB. Ký hiệu - biểu diễn một bóng đèn đã tắt.
-RB.--B.---.Không thể đạt được yêu cầu với chi phí nhỏ hơn \(27\) yên, nên in ra \(27\). Lưu ý rằng trường hợp không còn bóng đèn nào sáng cũng thỏa mãn điều kiện.
Ví dụ này thỏa mãn các ràng buộc của các phân nhóm \(1, 2, 3, 6\).
Ví dụ 4
9
RGBRGBRGB
1000000000 1000000000 1
0
Dãy màu của hàng đèn đã là một dãy lặp của RGB, nên in ra \(0\).
Ví dụ này thỏa mãn các ràng buộc của các phân nhóm \(2, 3, 4, 5, 6\).
Ví dụ 5
20
BRGBRGBBGBBBGRRBBBRB
1000000000 1000000000 1
2000000008
Ví dụ này thỏa mãn các ràng buộc của các phân nhóm \(2, 3, 5, 6\).
Ví dụ 6
23
BBGRGBBBBBBGRRGGGGBGGGG
786820955 792349124 710671229
10107224827
Ví dụ này thỏa mãn các ràng buộc của các phân nhóm \(2, 3, 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.
Vườn JOI có dạng hình vuông, được chia thành \(N\) hàng và \(N\) cột ô vuông. Ô ở hàng thứ \(i\) từ trên xuống và cột thứ \(j\) từ trái sang được gọi là ô \((i,j)\) (\(1 \le i,j \le N\)).
Đất trong vườn không tốt lắm, nên mỗi ô chỉ có thể trồng tối đa một bông hoa thuộc một màu nhất định. Cụ thể, ô \((i,j)\) chỉ có thể trồng hoa đỏ nếu \(A_{i,j}\) là R, hoa vàng nếu là Y, và hoa xanh dương nếu là B.
Để khu vườn đẹp hơn khi chụp ảnh từ trên không, ông K, người quản lý khu vườn, dự định trồng hoa theo quy trình sau:
Việc trồng hoa phải phù hợp với màu hoa mà từng ô cho phép. Cho kích thước khu vườn và màu hoa có thể trồng ở mỗi ô, hãy viết chương trình tìm số bông hoa nhiều nhất mà ông K có thể trồng.
Dòng thứ nhất chứa số nguyên \(N\).
Trong \(N\) dòng tiếp theo, dòng thứ \(i\) chứa xâu gồm \(N\) ký tự \(A_{i,1}A_{i,2}\ldots A_{i,N}\), không có dấu cách giữa các ký tự.
In ra trên một dòng số bông hoa nhiều nhất mà ông K có thể trồng.
R, Y hoặc B với mọi \(1 \le i \le N\), \(1 \le j \le N\).Mọi phân nhóm đều thỏa mãn các ràng buộc chung ở trên.
R.R trong bốn giá trị \(A_{i,j}\), \(A_{i,j+1}\), \(A_{i+1,j}\), \(A_{i+1,j+1}\).Ví dụ 1
3
RYR
YBY
BYY
5
Chọn \(r=1\), \((x,y)=(2,2)\), \(c_0\) là xanh dương và \(c_1\) là vàng thì có thể trồng \(5\) bông hoa như hình dưới đây. Màu nền của mỗi ô biểu diễn màu hoa có thể trồng tại ô đó. Trong hình, 黄 chỉ hoa vàng và 青 chỉ hoa xanh dương.
Không có cách trồng từ \(6\) bông hoa trở lên, nên in ra \(5\).
Ví dụ này thỏa mãn các ràng buộc của các phân nhóm \(1, 2, 3, 6\).
Ví dụ 2
9
YYRYBBBYR
BYYRRBYBB
RBRRBRBBY
RYRBRYRBR
YYBRYYYRB
RRYBRYRBR
RBYRBRBRB
BRYYRBBBR
RBBBYBRRY
25
Chọn \(r=3\), \((x,y)=(5,6)\), \(c_0\) và \(c_1\) là vàng, \(c_2\) là đỏ, \(c_3\) là xanh dương thì có thể trồng \(25\) bông hoa như hình dưới đây. Màu nền của mỗi ô biểu diễn màu hoa có thể trồng tại ô đó. Trong hình, 赤 chỉ hoa đỏ, 黄 chỉ hoa vàng và 青 chỉ hoa xanh dương.
Không có cách trồng từ \(26\) bông hoa trở lên, nên in ra \(25\).
Ví dụ này thỏa mãn các ràng buộc của các phân nhóm \(2, 3, 6\).
Ví dụ 3
6
RBYRBY
BYRBYR
YRBYRB
RBYRBY
BYRBYR
YRBYRB
1
Ví dụ này thỏa mãn các ràng buộc của các phân nhóm \(2, 3, 6\).
Ví dụ 4
20
RRRRRRRRRRRRRRRRRRRR
RRRRRRRRRRRRRRRRRRRR
RRRRBRRRRRRRRRRRRYRR
RRRRRRRRRRRRRRRRRRRR
RRRRRRRRRRRRRRRRRRRR
RRRRRRRRRRRRRRRRRRRR
RRRRRRRRRRRYRRRRRRRR
RRRRRRRRRRRRRRRRRRRR
RRRRRRRRRRRRRRRRRRRR
RRRRRRRRRRRRRRRRRRRR
RRRRRRRRRRRRRRRRRRRR
RRRRRYRRRRRRRRRRRRRR
RRRRRRRRRRRRRRRRRRRR
RRRRRRRRRRRRRRRRRRRR
RRRRRRRRRRRRRRRRRRBR
RRRRRRRRRRRRRRRRRRRR
RRRRRRRRRRRRRRRRRRRR
RRRRRRRRRRRRRRRRRRRR
RRRRRRRRRRRRRRRRRRRR
RRRRRRRRRRRRRRRRRRRR
85
Ví dụ này thỏa mãn các ràng buộc của các phân nhóm \(2, 3, 4, 5, 6\).
Ví dụ 5
10
RRRRRRRRRR
RYRRRRRRRR
RRRRYRRRRR
RBRRRRRRRR
RRRRRRRRYR
RBRRRRRRRR
RRRRBRRRRR
RBRRRRRRRR
RRRRRRRRYR
RRRRRRRRRR
25
Ví dụ này thỏa mãn các ràng buộc của các phân nhóm \(2, 3, 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.
Vương quốc JOI có \(N\) thành phố, được đánh số từ \(1\) đến \(N\). Có \(M\) đường cao tốc một chiều nối các thành phố, được đánh số từ \(1\) đến \(M\). Đi qua đường cao tốc \(i\) (\(1 \le i \le M\)) cho phép di chuyển từ thành phố \(A_i\) đến thành phố \(B_i\) và mất \(L_i\) đơn vị thời gian.
Mỗi lần đi qua một đường cao tốc, bạn phải trả phí. Phí thấp nhất của đường cao tốc \(i\) là \(C_i\). Tuy nhiên, mọi người lao động ở vương quốc JOI đều không thích làm việc ngoài giờ, nên càng cách xa thời điểm chuẩn \(0\), phí càng tăng. Cụ thể, nếu rời thành phố \(A_i\) vào thời điểm \(t\) để đi qua đường cao tốc \(i\), bạn phải trả phí \(C_i + K \times |t|\), trong đó \(K\) là một hằng số và \(|t|\) là giá trị tuyệt đối của \(t\).
Bạn sống ở thành phố \(1\) và muốn đến thăm người bạn sống ở thành phố \(N\). Trước hết, bạn muốn biết có thể đi từ thành phố \(1\) đến thành phố \(N\) bằng các đường cao tốc hay không. Nếu có, bạn muốn tìm tổng phí ít nhất phải trả. Bạn được tự do chọn lộ trình và thời điểm rời mỗi thành phố. Đặc biệt, bạn có thể rời thành phố \(1\) tại một thời điểm âm, hoặc ở lại một thành phố trong một khoảng thời gian mà không đi qua đường cao tốc nào.
Cho thông tin về các đường cao tốc và hằng số \(K\), hãy viết chương trình xác định có thể đi từ thành phố \(1\) đến thành phố \(N\) hay không và, nếu có, tìm tổng phí ít nhất phải trả.
Có thể chứng minh rằng, với các ràng buộc của bài toán, nếu tồn tại cách di chuyển thì tổng phí nhỏ nhất luôn là một số nguyên.
Dòng thứ nhất chứa ba số nguyên \(N, M, K\).
Trong \(M\) dòng tiếp theo, dòng thứ \(i\) chứa bốn số nguyên \(A_i, B_i, L_i, C_i\), cách nhau bởi dấu cách.
Nếu không thể đi từ thành phố \(1\) đến thành phố \(N\) bằng các đường cao tốc, in ra -1. Ngược lại, in ra trên một dòng số nguyên biểu diễn tổng phí ít nhất phải trả.
Mọi phân nhóm đều thỏa mãn các ràng buộc chung ở trên.
Ví dụ 1
4 4 2
1 2 3 2
1 3 1 10
2 3 1 4
3 4 5 3
15
Các thành phố và đường cao tốc được biểu diễn như hình dưới đây. Mỗi hình tròn là một thành phố, số bên trong là số hiệu thành phố; mỗi mũi tên là một đường cao tốc. Hai số ghi cạnh mỗi đường lần lượt là \(L_i\) và \(C_i\).
Có thể di chuyển như sau để tổng phí bằng \(15\):
Không có cách di chuyển nào có tổng phí nhỏ hơn \(15\), nên in ra \(15\).
Ví dụ này thỏa mãn các ràng buộc của các phân nhóm \(2, 5, 6, 7\).
Ví dụ 2
4 4 0
1 2 3 2
1 3 1 10
2 3 1 4
3 4 5 3
9
Ví dụ này chỉ khác ví dụ \(1\) ở giá trị của \(K\). Có thể di chuyển như sau để tổng phí bằng \(9\):
Không có cách di chuyển nào có tổng phí nhỏ hơn \(9\), nên in ra \(9\).
Ví dụ này thỏa mãn các ràng buộc của các phân nhóm \(1, 2, 5, 6, 7\).
Ví dụ 3
2 1 10
2 1 4 7
-1
Không thể đi từ thành phố \(1\) đến thành phố \(2\) bằng đường cao tốc, nên in ra -1.
Ví dụ này thỏa mãn các ràng buộc của các phân nhóm \(2, 5, 6, 7\).
Ví dụ 4
4 3 5
1 2 3 1
2 3 1 10
3 4 7 6
37
Ví dụ này thỏa mãn các ràng buộc của các phân nhóm \(2, 3, 5, 6, 7\).
Ví dụ 5
8 8 2
1 2 1 5
5 6 3 1
2 4 10 18
3 5 3 1
1 3 4 2
5 6 2 2
2 5 2 3
6 8 1 1
25
Có thể tồn tại nhiều đường cao tốc có cùng cặp đầu mút \((A_i,B_i)\).
Ví dụ này thỏa mãn các ràng buộc của các phân nhóm \(2, 4, 5, 6, 7\).
Ví dụ 6
6 10 100000
4 2 212037 752027141
2 5 667097 1571491
2 1 769275 576006950
1 2 711969 526189398
5 3 733555 206320177
3 4 364807 802102091
1 4 467240 183184247
3 5 44994 15991843
5 3 613192 782356546
4 6 832593 639529758
47546714005
Ví dụ này thỏa mãn các ràng buộc của các phân nhóm \(5, 6, 7\).
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.