| # | Bài tập | Điểm | Thời gian: | Giới hạn bộ nhớ |
|---|---|---|---|---|
| 1 | JOI 2013 - Homework | 100 (p) | 1.0s | 256M |
| 2 | JOI 2013 - Unique Number | 100 (p) | 1.0s | 256M |
| 3 | JOI 2013 - Signboard | 100 (p) | 1.0s | 256M |
| 4 | JOI 2013 - Hot Days | 100 (p) | 1.0s | 256M |
| 5 | JOI 2013 - Fish | 100 (p) | 1.0s | 256M |
| 6 | JOI 2013 - Gifts | 100 (p) | 1.0s | 256M |
Lần nào JOI cũng khổ sở vì bài tập trong kỳ nghỉ đông, nên lần này cậu quyết định lên kế hoạch làm bài tập. Bài tập gồm một quyển bài tập tiếng Nhật có \(A\) trang và một quyển bài tập toán có \(B\) trang.
Mỗi ngày, JOI có thể làm tối đa \(C\) trang bài tập tiếng Nhật và tối đa \(D\) trang bài tập toán. Tuy nhiên, nếu làm bài tập trong một ngày thì cậu không thể vui chơi trong ngày đó.
Kỳ nghỉ đông kéo dài \(L\) ngày và JOI phải hoàn thành bài tập trong kỳ nghỉ. Hãy viết chương trình tính số ngày vui chơi nhiều nhất mà JOI có thể có trong kỳ nghỉ đông.
Tính số ngày vui chơi nhiều nhất mà JOI có thể có trong kỳ nghỉ đông mà vẫn hoàn thành toàn bộ bài tập.
Dữ liệu vào gồm \(5\) dòng, mỗi dòng chứa một số nguyên dương.
Dữ liệu bảo đảm JOI có thể hoàn thành toàn bộ bài tập trong kỳ nghỉ đông và có ít nhất \(1\) ngày để vui chơi.
In ra một dòng chứa số ngày vui chơi nhiều nhất mà JOI có thể có trong kỳ nghỉ đông.
Ví dụ 1
20
25
30
6
8
15
Kỳ nghỉ đông kéo dài \(20\) ngày, bài tập tiếng Nhật có \(25\) trang và bài tập toán có \(30\) trang. Mỗi ngày, JOI có thể làm tối đa \(6\) trang tiếng Nhật và \(8\) trang toán. Chẳng hạn, nếu bắt đầu từ ngày đầu tiên và mỗi ngày làm \(6\) trang tiếng Nhật, \(8\) trang toán cho đến khi hoàn thành từng môn, cậu sẽ làm xong bài tập tiếng Nhật vào ngày thứ \(5\) và bài tập toán vào ngày thứ \(4\). Khi đó, cậu có thể vui chơi trong \(15\) ngày. Đây là số ngày vui chơi lớn nhất, nên in ra \(15\).
Ví dụ 2
15
32
48
4
6
7
Chẳng hạn, nếu bắt đầu từ ngày đầu tiên và mỗi ngày làm \(4\) trang tiếng Nhật, \(6\) trang toán, JOI sẽ hoàn thành cả hai quyển bài tập vào ngày thứ \(8\) và có \(7\) ngày vui chơi. Đây là số ngày vui chơi lớn nhất, nên in ra \(7\).
JOI quyết định chơi một trò chơi cùng bạn bè. Có \(N\) người tham gia. Luật của một lượt chơi như sau:
Mỗi người viết một số nguyên tùy ý từ \(1\) đến \(100\) lên một tấm thẻ rồi nộp thẻ. Nếu không có người nào khác viết cùng số với mình, người đó nhận được số điểm bằng số đã viết. Nếu có người khác viết cùng số, người đó không nhận được điểm nào.
JOI và các bạn đã chơi \(3\) lượt. Cho biết các số mà mỗi người đã viết trong cả \(3\) lượt, hãy viết chương trình tính tổng số điểm mỗi người nhận được sau \(3\) lượt chơi.
Tính tổng số điểm mà mỗi người chơi nhận được sau \(3\) lượt.
Dữ liệu vào gồm \(1+N\) dòng.
In ra \(N\) dòng. Dòng thứ \(i\) (\(1\le i\le N\)) chứa một số nguyên là tổng số điểm người chơi thứ \(i\) nhận được sau \(3\) lượt chơi.
Ví dụ 1
5
100 99 98
100 97 92
63 89 63
99 99 99
89 97 98
0
92
215
198
89
Chi tiết số điểm của từng người trong \(3\) lượt chơi như sau:
Ví dụ 2
3
89 92 77
89 92 63
89 63 77
0
63
63
JOI quyết định làm một tấm biển hiệu cho cửa hàng.
Có \(N\) tấm biển hiệu cũ, trên mỗi tấm các chữ cái được viết cách đều nhau. JOI sẽ làm biển hiệu bằng cách xóa một số chữ cái trên một tấm biển cũ. Cậu muốn các chữ cái còn lại, đọc theo thứ tự, tạo thành tên cửa hàng và vẫn nằm cách đều nhau. Mỗi biển hiệu phải được làm từ đúng một tấm biển cũ; không được cắt hoặc nối các tấm biển.
Cho tên cửa hàng và thông tin về \(N\) tấm biển cũ, hãy viết chương trình tính số tấm biển hiệu mà JOI có thể làm được. Nếu có nhiều cách làm biển hiệu từ cùng một tấm biển cũ thì tấm biển đó vẫn chỉ được tính một lần.
Tính số tấm biển cũ mà từ đó JOI có thể làm được biển hiệu mang tên cửa hàng.
Dữ liệu vào gồm \(2+N\) dòng.
In ra một dòng chứa một số nguyên là số tấm biển hiệu mà JOI có thể làm được.
Ví dụ 1
4
bar
abracadabra
bear
bar
baraxbara
3
Tên cửa hàng là bar.
abracadabra. Có thể làm biển hiệu bằng cách xóa tất cả chữ cái ngoại trừ các chữ ở vị trí thứ \(2\), \(6\) và \(10\).bar, nhưng các chữ cái còn lại không nằm cách đều nhau.Vì JOI có thể làm biển hiệu từ các tấm biển thứ \(1\), \(3\) và \(4\), in ra \(3\).
Vào thời điểm Nhật Bản đang là mùa đông, nước Úc ở Nam bán cầu lại trải qua những ngày nóng bức. IOI sống ở Úc và quyết định lên kế hoạch chọn quần áo dựa trên dự báo thời tiết cho \(D\) ngày. Nhiệt độ cao nhất của ngày thứ \(i\) (\(1\le i\le D\)) được dự báo là \(T_i\) độ.
IOI có \(N\) bộ quần áo, được đánh số từ \(1\) đến \(N\). Bộ thứ \(j\) (\(1\le j\le N\)) phù hợp để mặc vào những ngày có nhiệt độ cao nhất từ \(A_j\) đến \(B_j\) độ, kể cả hai đầu mút. Mỗi bộ quần áo còn có một số nguyên gọi là độ sặc sỡ; độ sặc sỡ của bộ thứ \(j\) là \(C_j\).
Với mỗi ngày trong \(D\) ngày, IOI chọn một bộ quần áo phù hợp với nhiệt độ cao nhất theo dự báo. Có thể chọn cùng một bộ nhiều lần, và cũng có thể có những bộ không được chọn lần nào trong \(D\) ngày.
IOI muốn hạn chế mặc những bộ quần áo giống nhau trong hai ngày liên tiếp, nên cậu muốn tổng giá trị tuyệt đối của hiệu độ sặc sỡ giữa các bộ quần áo mặc trong hai ngày liên tiếp lớn nhất có thể. Cụ thể, nếu chọn bộ \(x_i\) vào ngày thứ \(i\), cậu muốn tối đa hóa giá trị
Hãy viết chương trình tìm giá trị lớn nhất này.
Tính giá trị lớn nhất của tổng chênh lệch độ sặc sỡ giữa quần áo được chọn trong các ngày liên tiếp.
Dữ liệu vào gồm \(1+D+N\) dòng.
Dữ liệu bảo đảm mỗi ngày trong \(D\) ngày đều có ít nhất một bộ quần áo phù hợp với nhiệt độ cao nhất theo dự báo.
In ra một dòng chứa giá trị lớn nhất của tổng giá trị tuyệt đối của hiệu độ sặc sỡ giữa các bộ quần áo mặc trong hai ngày liên tiếp, tức là giá trị lớn nhất của
Ví dụ 1
3 4
31
27
35
20 25 30
23 29 90
21 35 60
28 33 40
80
Ngày thứ nhất có thể chọn bộ \(3\) hoặc \(4\); ngày thứ hai có thể chọn bộ \(2\) hoặc \(3\); ngày thứ ba chỉ có thể chọn bộ \(3\).
Chọn bộ \(4\) vào ngày thứ nhất, bộ \(2\) vào ngày thứ hai và bộ \(3\) vào ngày thứ ba, tức là \(x_1=4\), \(x_2=2\), \(x_3=3\). Giá trị tuyệt đối của hiệu độ sặc sỡ giữa hai ngày đầu là \(|40-90|=50\), còn giữa ngày thứ hai và thứ ba là \(|90-60|=30\). Tổng bằng \(80\), là giá trị lớn nhất.
Ví dụ 2
5 2
26
28
32
29
34
30 35 0
25 30 100
300
Trong các ngày từ thứ nhất đến thứ năm, IOI bắt buộc phải lần lượt chọn các bộ \(2,2,1,2,1\). Giá trị cần tìm là
Phía tây lục địa Úc là Ấn Độ Dương rộng lớn. Nhà nghiên cứu hải dương JOI đang nghiên cứu đặc tính của \(N\) loài cá sống tại đây.
Mỗi loài cá có một vùng sinh sống xác định trong biển, có dạng hình hộp chữ nhật. Cá có thể di chuyển đến mọi điểm trong vùng sinh sống của mình, kể cả biên, nhưng không bao giờ đi ra ngoài vùng đó. Một điểm trong biển được biểu diễn bởi ba số thực \((x,y,d)\): khi nhìn từ trên cao, điểm này nằm cách một vị trí mốc \(x\) đơn vị về phía đông và \(y\) đơn vị về phía bắc, đồng thời có độ sâu \(d\) tính từ mặt biển. Giả sử mặt biển là một mặt phẳng.
JOI muốn biết phần biển nơi vùng sinh sống của ít nhất \(K\) loài cá chồng lên nhau lớn đến mức nào. Hãy viết chương trình tính tổng thể tích của toàn bộ phần biển đó.
Tính tổng thể tích phần biển nằm trong vùng sinh sống của ít nhất \(K\) loài cá.
Dữ liệu vào gồm \(1+N\) dòng.
Các tọa độ thỏa mãn:
In ra một dòng chứa tổng thể tích của phần biển nơi vùng sinh sống của ít nhất \(K\) loài cá chồng lên nhau.
Ví dụ 1
3 2
30 50 0 50 70 100
10 20 20 70 90 60
40 60 20 90 90 70
49000
Chẳng hạn, điểm \((45,65,65)\) nằm trong vùng sinh sống của loài cá thứ \(1\) và thứ \(3\), nên thỏa mãn điều kiện. Ngược lại, điểm \((25,35,45)\) chỉ nằm trong vùng sinh sống của loài thứ \(2\), nên không thỏa mãn điều kiện.
Ví dụ 2
1 1
0 0 0 1000000 1000000 1000000
1000000000000000000
JOI đến Úc du lịch và đã vui chơi, tham quan nhiều nơi. Cuối cùng, ngày trở về nước cũng đến. Hiện tại cậu đang ở thị trấn có sân bay quốc tế, nơi chuyến bay về nước của cậu sẽ khởi hành. Thị trấn được chia thành các ô theo các hướng đông, tây, nam, bắc; mỗi ô là đường đi, cửa hàng lưu niệm, nhà ở hoặc sân bay quốc tế. JOI xuất phát từ ô ở góc tây bắc và muốn đến sân bay quốc tế ở ô góc đông nam.
Từ ô hiện tại, JOI có thể đi sang một ô kề cạnh, nhưng không được vào ô có nhà ở. Để kịp giờ bay, cậu chỉ di chuyển sang ô phía đông hoặc phía nam. Tuy nhiên, do vẫn còn một chút thời gian dư, cậu được phép thực hiện tổng cộng tối đa \(K\) lần di chuyển sang ô phía bắc hoặc phía tây.
Khi vào một ô có cửa hàng lưu niệm, JOI sẽ mua quà cho các bạn ở Nhật Bản. Cậu đã tìm hiểu kỹ các cửa hàng, nên biết ở mỗi cửa hàng mình có thể mua bao nhiêu món quà. Hãy viết chương trình tính số món quà nhiều nhất mà JOI có thể mua.
Có thể bỏ qua thời gian mua sắm. Nếu đến cùng một cửa hàng từ hai lần trở lên, JOI chỉ mua quà trong lần ghé đầu tiên.
Tính số món quà nhiều nhất JOI có thể mua trên một hành trình hợp lệ từ góc tây bắc đến sân bay ở góc đông nam.
Dữ liệu vào gồm \(1+H\) dòng.
Gọi ô thứ \(i\) tính từ phía bắc và thứ \(j\) tính từ phía tây là \((i,j)\) (\(1\le i\le H\), \(1\le j\le W\)). Ký tự thứ \(j\) trên dòng thứ \(i\) của bản đồ có ý nghĩa như sau:
.: ô \((i,j)\) là đường đi hoặc sân bay quốc tế.#: ô \((i,j)\) có nhà ở.1, 2, ..., 9: ô \((i,j)\) có cửa hàng lưu niệm; chữ số đó là số món quà có thể mua tại cửa hàng.Dữ liệu bảo đảm ô ở góc tây bắc, nơi JOI bắt đầu, là đường đi. Dữ liệu cũng bảo đảm JOI có thể đến được sân bay quốc tế.
In ra một dòng chứa một số nguyên là số món quà nhiều nhất mà JOI có thể mua.
Ví dụ 1
5 4 2
...#
.#.#
.#73
8##.
....
11
JOI đi về phía nam \(3\) lần và mua quà ở cửa hàng tại ô \((4,1)\). Sau đó, cậu đi thêm \(1\) lần về phía nam, \(3\) lần về phía đông, rồi \(2\) lần về phía bắc để mua quà ở cửa hàng tại ô \((3,4)\). Cuối cùng, cậu đi \(2\) lần về phía nam để đến sân bay quốc tế. Theo cách này, cậu mua được tổng cộng \(11\) món quà.
Ví dụ 2
4 4 3
.8#9
9.#.
.#9.
....
27