| # | Bài tập | Điểm | Thời gian: | Giới hạn bộ nhớ |
|---|---|---|---|---|
| 1 | JOI 2014 - JOI Emblem | 100 (p) | 1.0s | 256M |
| 2 | JOI 2014 - IOI Manju | 100 (p) | 1.0s | 256M |
| 3 | JOI 2014 - Baumkuchen | 100 (p) | 2.0s | 256M |
| 4 | JOI 2014 - Sugar Glider | 100 (p) | 2.0s | 256M |
| 5 | JOI 2014 - Cutting | 100 (p) | 3.0s | 256M |
Ủy ban Olympic Tin học Nhật Bản quyết định làm một lá cờ JOI mới để cổ vũ các thí sinh tham dự kỳ thi tại Đài Loan.
Lá cờ JOI gồm các ô vuông xếp thành \(M\) hàng và \(N\) cột. Mỗi ô vuông chứa đúng một trong ba chữ cái J, O, I.
Ngoài lá cờ JOI, ủy ban còn quy định một huy hiệu JOI. Huy hiệu gồm các ô vuông xếp thành \(2\) hàng và \(2\) cột, mỗi ô chứa đúng một trong ba chữ cái J, O, I.
Số huy hiệu JOI có trong một lá cờ là số vùng gồm \(2\) hàng liên tiếp và \(2\) cột liên tiếp mà cách sắp xếp các chữ cái trùng với huy hiệu JOI, không xoay hay lật. Các vùng thỏa mãn được đếm riêng, kể cả khi chúng chồng lên nhau.
Ủy ban có một lá cờ JOI cũ và một mảnh giấy trắng có kích thước bằng một ô vuông của lá cờ. Có thể viết lên mảnh giấy một chữ cái tùy chọn trong J, O, I. Để tạo lá cờ mới, ủy ban sẽ thực hiện một trong hai cách sau:
Ủy ban muốn số huy hiệu JOI có trong lá cờ mới lớn nhất có thể.
Cho thông tin về lá cờ JOI cũ và huy hiệu JOI, hãy tính số huy hiệu JOI lớn nhất có thể có trong lá cờ mới.
Đọc từ đầu vào chuẩn:
J, O, I. Ký tự thứ \(j\) từ trái sang của dòng thứ \(i\) trong các dòng này là chữ cái ở hàng \(i\) từ trên xuống, cột \(j\) từ trái sang của lá cờ cũ, với \(1 \le i \le M\), \(1 \le j \le N\).J, O, I. Ký tự thứ \(j\) từ trái sang của dòng thứ \(i\) trong hai dòng này là chữ cái ở hàng \(i\) từ trên xuống, cột \(j\) từ trái sang của huy hiệu JOI, với \(1 \le i,j \le 2\).In ra đầu ra chuẩn một dòng chứa một số nguyên: số huy hiệu JOI lớn nhất có thể có trong lá cờ mới.
Ví dụ 1
3 5
JOIJO
IJOOO
IIJIJ
JO
IJ
3
Lá cờ cũ và huy hiệu JOI giống các ví dụ trong hình minh họa ở phần mô tả. Nếu dùng mảnh giấy đổi ô ở hàng \(2\) từ trên xuống, cột \(4\) từ trái sang thành J, ta được lá cờ như trong hình minh họa việc thay đổi một vị trí.
Sau thay đổi này, lá cờ có \(3\) vùng với cách sắp xếp giống huy hiệu JOI, được chỉ ra trong hình sau.
Không có cách tạo lá cờ mới chứa từ \(4\) vùng như vậy trở lên, nên đáp án là \(3\).
Ví dụ 2
2 6
JOJOJO
OJOJOJ
OJ
JO
2
Lưu ý rằng có trường hợp đạt được giá trị lớn nhất mà không cần dùng mảnh giấy trắng.
Ví dụ 3
2 2
JI
IJ
JJ
JJ
0
Trong ví dụ này, mọi lá cờ mới có thể tạo ra đều không chứa huy hiệu JOI nào.
Incredible Okashi Inc. là công ty sản xuất những món bánh kẹo ngon đến khó tin, gọi tắt là công ty IOI. Công ty vừa làm ra những chiếc bánh manju IOI đặc biệt và quyết định đem bán. Có \(M\) loại bánh, mỗi loại được làm đúng một chiếc. Tất cả \(M\) chiếc bánh đều có cùng kích thước, nhưng mỗi chiếc có một hương vị khác nhau nên giá bán cũng khác nhau. Chiếc bánh thứ \(i\) (\(1 \le i \le M\)) có giá \(P_i\) yên.
Bạn có biết công ty Just Odd Inventions không? Công việc của công ty này là tạo ra những phát minh kỳ lạ; ta gọi tắt là công ty JOI. Công ty IOI quyết định đặt mua những chiếc hộp cao cấp của JOI để đựng bánh. JOI sản xuất \(N\) loại hộp đựng bánh manju. Hộp thứ \(j\) (\(1 \le j \le N\)) đựng được tối đa \(C_j\) chiếc bánh và có giá \(E_j\) yên.
IOI sẽ chọn một số loại hộp trong \(N\) loại, có thể chọn từ \(0\) đến \(N\) loại, và đặt mua đúng một hộp thuộc mỗi loại đã chọn. Sau đó, công ty chia bánh vào các hộp để bán thành từng bộ. Giá bán của một bộ bằng tổng giá của những chiếc bánh có trong bộ đó.
Giả sử tất cả các bộ bánh đều bán được, lợi nhuận lớn nhất mà IOI có thể thu được là bao nhiêu? Lợi nhuận bằng tổng giá bán các bộ bánh trừ đi tổng giá mua các hộp đã đặt. Những chiếc bánh không được đóng hộp sẽ được nhân viên IOI thưởng thức và không ảnh hưởng đến lợi nhuận.
Cho giá của từng chiếc bánh, sức chứa và giá của từng loại hộp, hãy tính lợi nhuận lớn nhất mà công ty IOI có thể thu được.
Đọc từ đầu vào chuẩn:
In ra đầu ra chuẩn một dòng chứa một số nguyên: lợi nhuận lớn nhất công ty IOI có thể thu được, tính bằng yên.
Ví dụ 1
4 3
180
160
170
190
2 100
3 120
4 250
480
Trong ví dụ này, có thể đặt mua hộp thứ \(1\) với giá \(100\) yên và hộp thứ \(2\) với giá \(120\) yên. Chẳng hạn, cho bánh thứ \(1\) và thứ \(2\) vào hộp thứ \(1\), bán thành một bộ với giá \(180 + 160 = 340\) yên; cho bánh thứ \(3\) và thứ \(4\) vào hộp thứ \(2\), bán thành một bộ với giá \(170 + 190 = 360\) yên. Lợi nhuận của IOI khi đó là \(700 - 220 = 480\) yên.
Ví dụ 2
2 2
1000
2000
1 6666
1 7777
0
Trong ví dụ này, để lợi nhuận lớn nhất, tốt nhất là không mua hộp nào.
Ví dụ 3
10 4
200
250
300
300
350
400
500
300
250
200
3 1400
2 500
2 600
1 900
450
JOI đang chuẩn bị ăn quà chiều cùng hai em gái JOI-ko và JOI-mi. Món ăn hôm nay là bánh Baumkuchen, món khoái khẩu của cả ba anh em.
Bánh Baumkuchen có dạng hình trụ như Hình 1. Để chia cho ba người, JOI phải cắt bánh thành ba miếng bằng ba nhát cắt theo hướng bán kính. Tuy nhiên, chiếc bánh này cứng như gỗ thật nên không dễ cắt. Vì vậy, trên bánh đã có sẵn \(N\) rãnh cắt và JOI chỉ có thể cắt tại những vị trí này.
Đánh số các rãnh từ \(1\) đến \(N\) theo chiều kim đồng hồ. Với \(1 \le i \le N-1\), phần bánh nằm giữa rãnh thứ \(i\) và rãnh thứ \(i+1\) có độ lớn \(A_i\). Phần bánh nằm giữa rãnh thứ \(N\) và rãnh thứ \(1\) có độ lớn \(A_N\).
Hình 1: Ví dụ về bánh Baumkuchen với \(N = 6\), \(A_1 = 1\), \(A_2 = 5\), \(A_3 = 4\), \(A_4 = 5\), \(A_5 = 2\), \(A_6 = 4\).
Vì thương các em, sau khi cắt bánh thành ba miếng, JOI sẽ chọn miếng nhỏ nhất cho mình và nhường hai miếng còn lại cho hai em gái. Mặt khác, JOI rất thích bánh Baumkuchen nên muốn được ăn càng nhiều càng tốt. Nếu cắt sao cho miếng nhỏ nhất có độ lớn lớn nhất có thể, miếng bánh JOI ăn sẽ có độ lớn bao nhiêu?
Cho số rãnh cắt \(N\) và các số nguyên \(A_1, \ldots, A_N\) biểu diễn độ lớn của từng phần bánh. Hãy tính giá trị lớn nhất có thể của độ lớn miếng nhỏ nhất khi chia bánh thành ba miếng.
Đọc từ đầu vào chuẩn:
In ra đầu ra chuẩn một dòng chứa một số nguyên: giá trị lớn nhất có thể của độ lớn miếng nhỏ nhất khi chia bánh thành ba miếng.
Ví dụ 1
6
1
5
4
5
2
4
6
Ví dụ 2
30
1
34
44
13
30
1
9
3
7
7
20
12
2
44
6
9
44
31
17
20
33
18
48
23
19
31
24
50
43
15
213
Trong khu rừng nơi chú sóc bay đường JOI sinh sống có \(N\) cây bạch đàn, được đánh số từ \(1\) đến \(N\). Cây \(i\) cao \(H_i\) mét.
Có \(M\) cặp cây mà JOI có thể bay trực tiếp từ cây này sang cây kia theo cả hai chiều. Với mỗi cặp, thời gian cần để bay giữa hai cây đã được xác định. Trong lúc bay, độ cao của JOI so với mặt đất giảm \(1\) mét mỗi giây. Cụ thể, nếu độ cao hiện tại là \(h\) mét và chuyến bay mất \(t\) giây thì khi đến nơi, độ cao của JOI sẽ là \(h-t\) mét. Tuy nhiên, JOI không thể thực hiện chuyến bay nếu \(h-t < 0\) hoặc \(h-t\) lớn hơn chiều cao của cây đích.
Ngoài ra, JOI có thể di chuyển lên hoặc xuống dọc theo thân cây đang đứng, thay đổi độ cao trong khoảng từ \(0\) mét đến chiều cao của cây đó. Mỗi lần tăng hoặc giảm độ cao \(1\) mét mất \(1\) giây.
JOI muốn đi từ vị trí ở độ cao \(X\) mét trên cây \(1\) đến ngọn cây \(N\), tức vị trí ở độ cao \(H_N\) mét, và muốn biết thời gian ít nhất cần để thực hiện việc này.
Cho chiều cao của từng cây, thông tin về các cặp cây JOI có thể bay trực tiếp giữa chúng và độ cao ban đầu của JOI. Hãy tính thời gian ít nhất để JOI đến ngọn cây \(N\).
Đọc từ đầu vào chuẩn:
In ra đầu ra chuẩn một dòng chứa một số nguyên: thời gian ít nhất, tính bằng giây, để JOI đi từ độ cao \(X\) mét trên cây \(1\) đến ngọn cây \(N\). Nếu không có cách đi như vậy, in ra \(-1\).
Ví dụ 1
5 5 0
50
100
25
30
10
1 2 10
2 5 50
2 4 20
4 3 1
5 4 20
110
Chẳng hạn, JOI có thể di chuyển như sau:
Ví dụ 2
2 1 0
1
1
1 2 100
-1
JOI không thể bay từ cây \(1\) sang cây \(2\).
Ví dụ 3
4 3 30
50
10
20
50
1 2 10
2 3 10
3 4 10
100
JOI thích làm mô hình giấy. Hôm nay, cậu lại chuẩn bị làm một tác phẩm mới.
Trước hết, theo bản thiết kế, JOI in \(N\) đường cắt lên một tờ giấy hình chữ nhật. Mỗi đường cắt là một đoạn thẳng song song với cạnh dọc hoặc cạnh ngang của tờ giấy.
Tất cả các phần giấy tạo ra sau khi cắt đều sẽ được dùng làm các bộ phận của tác phẩm. Tất nhiên, tác phẩm càng có nhiều bộ phận thì càng khó làm. JOI muốn biết tờ giấy sẽ được chia thành bao nhiêu phần sau khi cắt theo tất cả các đường cắt.
Cho kích thước tờ giấy và thông tin về \(N\) đường cắt. Hãy tính số phần mà tờ giấy được chia thành sau khi cắt theo những đường này.
Đọc từ đầu vào chuẩn:
In ra đầu ra chuẩn một dòng chứa một số nguyên: số phần mà tờ giấy được chia thành.
Ví dụ 1
10 10 5
6 0 6 7
0 6 7 6
2 3 9 3
2 3 2 10
1 9 8 9
4
Ví dụ 2
13 7 28
1 1 4 1
1 1 1 3
2 2 3 2
2 2 2 3
1 3 2 3
3 2 3 6
4 1 4 6
3 6 4 6
5 1 8 1
5 1 5 6
6 2 7 2
6 2 6 5
7 2 7 5
6 5 7 5
8 1 8 6
5 6 8 6
9 1 12 1
9 1 9 2
9 2 10 2
12 1 12 2
11 2 12 2
10 2 10 5
9 5 10 5
9 5 9 6
11 2 11 5
11 5 12 5
12 5 12 6
9 6 12 6
5