| # | Bài tập | Điểm | Thời gian: | Giới hạn bộ nhớ |
|---|---|---|---|---|
| 1 | JOI 2018 - Pencils | 100 (p) | 1.0s | 256M |
| 2 | JOI 2018 - Sugoroku | 100 (p) | 1.0s | 256M |
| 3 | JOI 2018 - Trunk Road | 100 (p) | 1.0s | 256M |
| 4 | JOI 2018 - Mizuyokan | 100 (p) | 1.0s | 256M |
| 5 | JOI 2018 - Deforestation | 100 (p) | 1.0s | 256M |
| 6 | JOI 2018 - LthKthNumber | 100 (p) | 1.0s | 256M |
JOI muốn mua \(N\) chiếc bút chì tại một cửa hàng văn phòng phẩm gần nhà. Cửa hàng bán bút chì theo hai loại bộ: bộ \(X\) gồm \(A\) chiếc với giá \(B\) yên, còn bộ \(Y\) gồm \(C\) chiếc với giá \(D\) yên.
JOI chọn một trong hai loại bộ \(X\) hoặc \(Y\), rồi mua một số bộ thuộc loại đã chọn. JOI không được mua cả hai loại bộ.
Hãy tính số tiền ít nhất cần trả để mua được ít nhất \(N\) chiếc bút chì.
Một dòng chứa năm số nguyên \(N, A, B, C, D\).
In ra số tiền ít nhất, tính bằng yên, để JOI mua được ít nhất \(N\) chiếc bút chì.
Ví dụ 1
10 3 100 5 180
360
JOI muốn mua ít nhất \(10\) chiếc bút chì. Nếu chọn bộ \(X\), mỗi bộ có \(3\) chiếc và giá \(100\) yên, JOI phải mua \(4\) bộ với tổng giá \(400\) yên. Nếu chọn bộ \(Y\), mỗi bộ có \(5\) chiếc và giá \(180\) yên, JOI chỉ cần mua \(2\) bộ với tổng giá \(360\) yên. Số tiền ít nhất là \(360\) yên.
Ví dụ 2
6 2 200 3 300
600
Dù chọn bộ \(X\) hay bộ \(Y\), số tiền cần trả đều là \(600\) yên.
JOI 2017/2018, vòng loại, bài 1. Đề bài của Ban tổ chức Olympic Tin học Nhật Bản, theo giấy phép CC BY-SA 4.0.
JOI tìm thấy một bàn cờ Sugoroku ở nhà chú. Bàn cờ gồm \(N+2\) ô nằm trên một đường thẳng. Ô thứ nhất là ô xuất phát, còn ô thứ \(N+2\) là ô đích. Với mỗi \(i\) từ \(1\) đến \(N\), ô thứ \(i+1\) ghi số \(A_i\), bằng \(0\) hoặc \(1\).
Ban đầu, quân cờ được đặt ở ô xuất phát. Người chơi lặp lại việc gieo xúc xắc và tiến quân cờ một số ô bằng số chấm gieo được. Nếu quân cờ dừng ở một ô ghi số \(1\), người chơi thua ngay. Nếu quân cờ đến hoặc vượt qua ô đích mà chưa thua, người chơi thắng.
JOI đến cửa hàng đồ chơi để mua xúc xắc. Cửa hàng bán \(N+1\) loại xúc xắc: loại thứ \(j\) có \(j\) mặt, ghi lần lượt các số \(1,2,\ldots,j\), mỗi số xuất hiện trên đúng một mặt.
JOI muốn mua loại xúc xắc có ít mặt nhất sao cho tồn tại một dãy kết quả gieo giúp JOI thắng. Hãy xác định số mặt của loại xúc xắc cần mua.
In ra số mặt ít nhất của một loại xúc xắc mà JOI có thể dùng để thắng.
Ví dụ 1
5
0 1 0 0 0
2
Bàn cờ có \(7\) ô, trong đó chỉ ô thứ \(3\) ghi số \(1\). Với xúc xắc có \(2\) mặt, chẳng hạn dãy kết quả gieo \(1,2,1,1,1\) giúp JOI thắng. Đây là số mặt ít nhất có thể.
Ví dụ 2
5
1 1 1 1 1
6
Bàn cờ có \(7\) ô. Tất cả các ô trừ ô xuất phát và ô đích đều ghi số \(1\), nên cần xúc xắc có ít nhất \(6\) mặt.
Ví dụ 3
7
0 0 1 0 1 1 0
3
JOI 2017/2018, vòng loại, bài 2. Đề bài của Ban tổ chức Olympic Tin học Nhật Bản, theo giấy phép CC BY-SA 4.0.
Thành phố JOI được chia thành dạng bàn cờ bởi \(H\) con đường thẳng theo hướng đông - tây và \(W\) con đường thẳng theo hướng bắc - nam. Khoảng cách giữa hai con đường song song liên tiếp bằng \(1\). Thành phố sẽ chọn một đường theo hướng đông - tây và một đường theo hướng bắc - nam trong số \(H+W\) con đường này làm hai tuyến đường chính.
Gọi giao điểm của con đường thứ \(i\) tính từ phía bắc và con đường thứ \(j\) tính từ phía tây là giao lộ \((i,j)\), với \(1 \le i \le H\) và \(1 \le j \le W\). Khoảng cách từ giao lộ \((i,j)\) đến con đường thứ \(m\) tính từ phía bắc là \(|i-m|\), còn khoảng cách đến con đường thứ \(n\) tính từ phía tây là \(|j-n|\). Có \(A_{i,j}\) cư dân sống gần giao lộ \((i,j)\).
Với mỗi cư dân, xét khoảng cách từ giao lộ gần nơi họ sống nhất đến tuyến đường chính gần hơn trong hai tuyến đã chọn. Hãy tìm giá trị nhỏ nhất có thể của tổng khoảng cách này trên tất cả cư dân trong thành phố.
In ra tổng khoảng cách nhỏ nhất từ giao lộ gần mỗi cư dân nhất đến tuyến đường chính gần hơn trong hai tuyến đã chọn.
Ví dụ 1
3 5
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
8
Chẳng hạn, có thể chọn con đường thứ \(2\) tính từ phía bắc và con đường thứ \(1\) tính từ phía tây làm hai tuyến đường chính.
Ví dụ 2
5 5
1 2 3 1 5
1 22 11 44 3
1 33 41 53 2
4 92 35 23 1
4 2 6 3 5
164
JOI 2017/2018, vòng loại, bài 3: Trunk Road. Đề bài của Ban tổ chức Olympic Tin học Nhật Bản.
Mizuyokan là một loại bánh ngọt Nhật Bản, được làm bằng cách đổ nhân chủ yếu từ đậu đỏ vào khuôn rồi dùng thạch agar để làm đông. JOI có một chiếc bánh mizuyokan hình hộp chữ nhật dài nằm ngang và định ăn chiếc bánh này trong bữa ăn nhẹ hôm nay.
Trên bánh có \(N-1\) vết khía theo chiều dọc để cắt. Chiều dài của bánh là \(L_1+L_2+\cdots+L_N\). Vết khía thứ \(i\) nằm ở vị trí cách đầu bên trái một khoảng \(L_1+L_2+\cdots+L_i\), với \(1 \le i \le N-1\).
Chiếc bánh quá lớn để ăn nguyên cả chiếc, nên JOI sẽ chọn ít nhất một vết khía và cắt theo các vết khía đã chọn để chia bánh thành nhiều miếng. Các miếng không đều nhau sẽ không đẹp mắt, vì vậy JOI muốn hiệu giữa chiều dài miếng dài nhất và chiều dài miếng ngắn nhất là nhỏ nhất có thể.
Hãy tìm giá trị nhỏ nhất của hiệu đó.
In ra trên một dòng hiệu nhỏ nhất có thể giữa chiều dài miếng dài nhất và chiều dài miếng ngắn nhất.
Ví dụ 1
11
2
3
8
4
7
6
6
5
1
7
5
2
Cắt theo vết khía thứ \(4\) và thứ \(7\) sẽ chia bánh thành ba miếng có chiều dài lần lượt là \(17,19,18\). Miếng dài nhất có chiều dài \(19\), miếng ngắn nhất có chiều dài \(17\), nên hiệu là \(2\). Đây là giá trị nhỏ nhất, vì vậy in ra \(2\).
Ví dụ 2
2
1
10
9
Dù các miếng có không đều nhau đến đâu, vẫn phải cắt bánh tại ít nhất một vết khía.
Ví dụ 3
5
5
5
5
5
5
0
Có thể chia chiếc bánh thành đúng năm miếng có kích thước bằng nhau.
JOI 2017/2018, vòng loại, bài 4: Mizuyokan. Đề bài của Ban tổ chức Olympic Tin học Nhật Bản.
Vương quốc JOI có một khu rừng rộng lớn hình chữ nhật, được chia thành lưới gồm \(H\) hàng theo hướng bắc - nam và \(W\) cột theo hướng đông - tây. Ô ở hàng thứ \(i\) tính từ phía bắc, cột thứ \(j\) tính từ phía tây có \(A_{i,j}\) cây, với \(1 \le i \le H\), \(1 \le j \le W\). Riêng ô ở góc tây bắc có một nhà máy chế biến gỗ và không có cây, tức là \(A_{1,1}=0\).
Chỉ có thể đi vào những ô không có cây. Từ một ô, người ta có thể đi sang ô kề theo hướng đông, tây, nam hoặc bắc nếu ô đó không có cây. Không được đi ra ngoài khu rừng. Là một công trình công cộng của vương quốc, JOI muốn chặt cây để có thể đi lại giữa ô ở góc tây bắc và ô ở góc đông nam.
Ban đầu, JOI đứng ở ô góc tây bắc, nơi có nhà máy chế biến gỗ. JOI có thể đi sang một ô kề theo một trong bốn hướng nếu ô đó không có cây, mất \(1\) phút. JOI cũng có thể đứng tại ô hiện tại và chặt một cây trong một ô kề theo một trong bốn hướng, mất \(1\) phút.
Sau mỗi lần chặt một cây, JOI phải mang cây vừa chặt về nhà máy ở ô góc tây bắc. Tốc độ di chuyển không thay đổi khi mang cây, nhưng trong lúc mang cây, JOI không thể chặt cây khác.
Hãy tìm thời gian ít nhất để chặt cây sao cho hai ô góc tây bắc và đông nam có thể đi lại được với nhau. Thời gian được tính đến khi JOI đã mang cây cuối cùng được chặt về nhà máy.
In ra trên một dòng thời gian ít nhất, tính bằng phút, để thực hiện yêu cầu.
Ví dụ 1
2 3
0 1 2
3 4 5
32
Ký hiệu ô ở hàng thứ \(i\) tính từ phía bắc, cột thứ \(j\) tính từ phía tây là \((i,j)\).
Trước tiên, chặt cây ở \((1,2)\), mất \(1\) phút.
Tiếp theo, chặt hết cây ở \((1,3)\). Để chặt một cây, từ \((1,1)\) đi sang phía đông một ô, chặt một cây ở \((1,3)\), rồi đi sang phía tây một ô để trở về \((1,1)\). Mỗi cây mất \(3\) phút, nên bước này mất \(2 \times 3=6\) phút.
Sau đó, chặt hết cây ở \((2,3)\). Để chặt một cây, từ \((1,1)\) đi sang phía đông hai ô, chặt một cây ở \((2,3)\), rồi đi sang phía tây hai ô để trở về \((1,1)\). Mỗi cây mất \(5\) phút, nên bước này mất \(5 \times 5=25\) phút.
Tổng thời gian là \(1+6+25=32\) phút. Không thể đáp ứng yêu cầu trong thời gian ngắn hơn, nên in ra \(32\).
Ví dụ 2
2 5
0 5 0 0 0
0 0 0 9 1
13
Chỉ cần chặt cây ở ô \((2,5)\).
Ví dụ 3
2 5
0 2 0 0 0
0 0 0 9 1
11
Trước tiên chặt cây ở ô \((1,2)\), sau đó chặt cây ở ô \((2,5)\).
JOI 2017/2018, vòng loại, bài 5: Deforestation. Đề bài của Ban tổ chức Olympic Tin học Nhật Bản.
Có \(N\) tấm thẻ được xếp thành một hàng ngang. Tấm thẻ thứ \(i\) từ trái sang phải ghi số nguyên \(a_i\), với \(1 \le i \le N\).
JOI chơi một trò chơi với những tấm thẻ này. JOI chọn một đoạn gồm ít nhất \(K\) tấm thẻ liên tiếp và thực hiện các bước sau:
JOI thực hiện thao tác này với mọi đoạn gồm ít nhất \(K\) thẻ liên tiếp. Nói cách khác, với mỗi cặp \((l,r)\) thỏa mãn \(1 \le l \le r \le N\) và \(K \le r-l+1\), JOI ghi ra số nhỏ thứ \(K\) trong dãy \(a_l,a_{l+1},\ldots,a_r\).
Sau đó, JOI sắp xếp tất cả các số đã ghi ra theo thứ tự không giảm. Số thứ \(L\) từ trái sang phải trong dãy này là điểm số của JOI. Hãy tìm điểm số đó. Các lần xuất hiện của cùng một giá trị vẫn được tính riêng.
In ra trên một dòng điểm số của JOI.
Ví dụ 1
4 3 2
4 3 1 2
3
Có ba cặp \((l,r)\) thỏa mãn \(1 \le l \le r \le N=4\) và \(K=3 \le r-l+1\): \((1,3)\), \((1,4)\) và \((2,4)\).
Số nhỏ thứ \(3\) trong các đoạn tương ứng lần lượt là \(4,3,3\). Số nhỏ thứ \(L=2\) trong các số này là \(3\), nên điểm của JOI là \(3\). Lưu ý rằng khi một số xuất hiện nhiều lần, mọi lần xuất hiện đều được tính.
Ví dụ 2
5 3 3
1 5 2 2 4
4
Các số JOI ghi ra là:
Số nhỏ thứ \(L=3\) trong các số này là \(4\).
Ví dụ 3
6 2 9
1 5 3 4 2 4
4
Ví dụ 4
6 2 8
1 5 3 4 2 4
3
JOI 2017/2018, vòng loại, bài 6: LthKthNumber. Đề bài của Ban tổ chức Olympic Tin học Nhật Bản.