| # | Bài tập | Điểm | Thời gian: | Giới hạn bộ nhớ |
|---|---|---|---|---|
| 1 | JOI 2014 - Average Score | 100 (p) | 1.0s | 256M |
| 2 | JOI 2014 - Vote | 100 (p) | 1.0s | 256M |
| 3 | JOI 2014 - Super Metropolis | 100 (p) | 1.0s | 256M |
| 4 | JOI 2014 - Schedule | 100 (p) | 1.0s | 256M |
| 5 | JOI 2014 - Taxis | 100 (p) | 2.0s | 256M |
| 6 | JOI 2014 - Xiao Long Bao | 100 (p) | 2.0s | 256M |
Có năm học sinh tham gia một lớp học ở trường trung học JOI: Taro, Jiro, Saburo, Shiro và Hanako.
Cả năm học sinh đều dự thi cuối kỳ của lớp học này. Với học sinh đạt từ \(40\) điểm trở lên trong kỳ thi, điểm tổng kết chính là điểm thi cuối kỳ. Tất cả học sinh có điểm thi dưới \(40\) đều tham gia học phụ đạo và được tính điểm tổng kết là \(40\).
Cho điểm thi cuối kỳ của năm học sinh, hãy viết chương trình tính trung bình cộng điểm tổng kết của cả năm bạn.
Dữ liệu vào gồm \(5\) dòng, mỗi dòng chứa một số nguyên:
In ra một dòng chứa một số nguyên là trung bình cộng điểm tổng kết của năm học sinh.
Ví dụ 1
10
65
100
30
95
68
Điểm thi của Taro và Shiro đều dưới \(40\), nên điểm tổng kết của hai bạn đều là \(40\). Điểm thi của Jiro, Saburo và Hanako đều từ \(40\) trở lên, nên điểm tổng kết của ba bạn lần lượt là \(65\), \(100\) và \(95\). Tổng điểm tổng kết của năm bạn là \(340\), do đó điểm trung bình là \(68\).
Ví dụ 2
40
95
0
95
50
64
Một đại hội thể thao mang tầm thế giới sẽ được tổ chức tại Tokyo vào năm 20XX. Thi lập trình được yêu thích như một môn thể thao trên toàn thế giới và có khả năng được đưa vào đại hội. Sau khi tìm hiểu về hội đồng xét chọn các môn thi, ta biết được những thông tin sau.
Một danh sách gồm \(N\) môn thi ứng viên đã được lập cho hội đồng, sắp xếp theo thứ tự từ thú vị nhất đến ít thú vị nhất. Môn ở vị trí thứ \(i\) từ trên xuống là môn thú vị thứ \(i\) và được gọi là môn thi \(i\). Danh sách còn ghi chi phí \(A_i\) cần thiết để tổ chức môn thi \(i\).
Hội đồng gồm \(M\) thành viên, được đánh số từ \(1\) đến \(M\). Thành viên \(j\) có ngưỡng chi phí riêng là \(B_j\) và bỏ một phiếu cho môn thú vị nhất trong số các môn có chi phí tổ chức không vượt quá \(B_j\).
Với ngưỡng chi phí của mỗi thành viên, luôn có ít nhất một môn thi có chi phí tổ chức không vượt quá ngưỡng đó. Vì vậy, tất cả thành viên đều bỏ đúng một phiếu. Có duy nhất một môn thi nhận được nhiều phiếu nhất.
Cho danh sách các môn thi và thông tin về các thành viên hội đồng, hãy viết chương trình tìm số hiệu của môn thi nhận được nhiều phiếu nhất.
Dữ liệu vào gồm \(1 + N + M\) dòng:
In ra một dòng chứa số hiệu của môn thi nhận được nhiều phiếu nhất.
Ví dụ 1
4 3
5
3
1
4
4
3
2
2
Có \(4\) môn thi và \(3\) thành viên hội đồng. Chi phí của các môn thi trong danh sách lần lượt là \(5, 3, 1, 4\).
Do đó, môn \(2\) nhận được \(2\) phiếu và môn \(3\) nhận được \(1\) phiếu. Môn \(2\) nhận được nhiều phiếu nhất, nên in ra \(2\).
Ví dụ 2
6 6
3
1
4
1
5
9
2
6
5
3
5
9
1
Môn \(1\) nhận được \(5\) phiếu và môn \(2\) nhận được \(1\) phiếu. Môn \(1\) nhận được nhiều phiếu nhất, nên in ra \(1\).
JOI được giao lập kế hoạch cho một chuyến tham quan thành phố Siêu Đô ở đất nước IOI.
Siêu Đô được chia thành một lưới ô vuông bởi \(W\) con đường thẳng chạy theo hướng bắc–nam và \(H\) con đường thẳng chạy theo hướng đông–tây.
Các con đường bắc–nam được đánh số \(1, 2, \ldots, W\) từ tây sang đông. Các con đường đông–tây được đánh số \(1, 2, \ldots, H\) từ nam lên bắc. Giao điểm của con đường bắc–nam thứ \(i\) tính từ phía tây và con đường đông–tây thứ \(j\) tính từ phía nam được ký hiệu là \((i, j)\).
Ngoài ra, từ mỗi giao điểm còn có một đoạn đường đến giao điểm liền kề về phía đông bắc, trừ các giao điểm nằm trên con đường cực bắc hoặc cực đông. Tương tự, có một đoạn đường đến giao điểm liền kề về phía tây nam, trừ các giao điểm nằm trên con đường cực nam hoặc cực tây.
Cụ thể, từ giao điểm \((i, j)\), có thể đi qua một đoạn đường để đến mỗi giao điểm trong số \((i - 1, j)\), \((i + 1, j)\), \((i, j - 1)\), \((i, j + 1)\) nếu giao điểm đó tồn tại. Ngoài ra, cũng có thể đi qua một đoạn đường để đến \((i - 1, j - 1)\) hoặc \((i + 1, j + 1)\) nếu giao điểm đó tồn tại.
JOI đã quyết định thứ tự ghé thăm \(N\) điểm tham quan. Điểm tham quan thứ \(i\) cần ghé thăm (\(1 \le i \le N\)) nằm tại giao điểm \((X_i, Y_i)\). Để rút ngắn thời gian của chuyến tham quan, JOI muốn giảm số đoạn đường phải đi qua.
Hãy viết chương trình tìm tổng số đoạn đường ít nhất phải đi qua để ghé thăm các điểm tham quan theo đúng thứ tự đã định.
Chuyến tham quan bắt đầu tại giao điểm \((X_1, Y_1)\). Trong chuyến đi, JOI không được ra ngoài Siêu Đô. JOI có thể đi qua giao điểm có một điểm tham quan mà không ghé thăm điểm tham quan đó.
Làm rõ về tổng số đoạn đường: Có thể đi qua cùng một đoạn đường hai lần trở lên trong chuyến tham quan. Khi tính tổng số đoạn đường, đoạn đường đó được tính lặp lại đúng bằng số lần đi qua.
Dữ liệu vào gồm \(1 + N\) dòng:
In ra một dòng chứa tổng số đoạn đường ít nhất phải đi qua để ghé thăm các điểm tham quan theo đúng thứ tự.
Ví dụ 1
4 3 3
1 1
3 3
4 1
5
Chẳng hạn, có thể đi qua các giao điểm theo thứ tự \((1, 1)\), \((2, 2)\), \((3, 3)\), \((3, 2)\), \((4, 2)\), \((4, 1)\).
Ví dụ 2
4 3 5
1 3
4 3
2 2
2 2
1 3
7
Như trong ví dụ này, có thể phải ghé thăm cùng một giao điểm nhiều lần.
Câu lạc bộ lập trình của trường trung học IOI có ba thành viên là J, O và I. Câu lạc bộ đang lập lịch sinh hoạt cho \(N\) ngày.
Trong mỗi ngày, mỗi thành viên có hai lựa chọn: tham gia hoặc không tham gia. Vì vậy, xét riêng việc tham gia của ba thành viên, có tất cả \(8\) khả năng cho một ngày.
Phòng câu lạc bộ chỉ có một chiếc chìa khóa, ban đầu do J giữ. Vào mỗi ngày sinh hoạt, một trong những thành viên tham gia ngày đó phải mang theo chìa khóa. Sau buổi sinh hoạt, một trong những thành viên đã tham gia sẽ mang chìa khóa về.
Để bảo đảm buổi sinh hoạt diễn ra vào tất cả các ngày đã định, câu lạc bộ chỉ định trước một người phụ trách cho mỗi ngày. Người phụ trách bắt buộc phải tham gia buổi sinh hoạt của ngày đó.
Cho số ngày cần lập lịch và người phụ trách của từng ngày, hãy viết chương trình đếm số lịch tham gia cho phép câu lạc bộ sinh hoạt vào tất cả các ngày, rồi in ra phần dư của số đó khi chia cho \(10007\).
Thành viên mang chìa khóa về sau mỗi buổi có thể là bất kỳ thành viên nào tham gia buổi đó. Vào ngày cuối cùng, ai mang chìa khóa về cũng được. Một lịch được xác định bởi những thành viên tham gia từng ngày.
Dữ liệu vào gồm \(2\) dòng:
J, O, I lần lượt tương ứng với J, O, I.In ra một dòng chứa phần dư của số lịch hợp lệ khi chia cho \(10007\).
J, O hoặc I.Ví dụ 1
2
OI
7
Cần lập lịch cho \(2\) ngày. Người phụ trách ngày thứ nhất là O, người phụ trách ngày thứ hai là I. Có \(7\) lịch thỏa mãn các điều kiện:
| Lịch | Ngày thứ nhất | Ngày thứ hai |
|---|---|---|
| 1 | J, O | O, I |
| 2 | J, O | J, I |
| 3 | J, O | J, O, I |
| 4 | J, O, I | I |
| 5 | J, O, I | J, I |
| 6 | J, O, I | O, I |
| 7 | J, O, I | J, O, I |
Trong bảng, J, O, I cho biết các thành viên tham gia vào ngày tương ứng.
Mặc dù O là người phụ trách ngày thứ nhất, J là người giữ chìa khóa ban đầu, nên cả J và O đều phải tham gia ngày thứ nhất.
Người mang chìa khóa về sau ngày thứ nhất phải tham gia ngày thứ hai. Do đó, phải có ít nhất một người tham gia cả hai ngày.
Ví dụ 2
20
JIOIJOIJOJOIIIOJIOII
4976
Có tất cả \(72493594992\) lịch thỏa mãn các điều kiện. Phần dư khi chia số này cho \(10007\) là \(4976\), nên in ra \(4976\).
Đất nước IOI gồm \(N\) thị trấn, được đánh số từ \(1\) đến \(N\), nối với nhau bằng các con đường. Có \(K\) con đường, mỗi con đường nối hai thị trấn khác nhau. Xe có thể đi theo cả hai chiều trên mỗi con đường, nhưng không thể đi từ thị trấn này sang thị trấn khác mà không đi theo các con đường.
JOI sống ở thị trấn \(1\) và quyết định đi taxi đến nhà bà ở thị trấn \(N\). Đất nước IOI có \(N\) hãng taxi, được đánh số từ \(1\) đến \(N\). Các hãng taxi có những quy định hơi đặc biệt sau:
Ví dụ, nếu \(R_1 = 2\), khi lên taxi của hãng \(1\) tại thị trấn \(1\), JOI chỉ có thể đi qua tối đa \(2\) con đường bằng chiếc taxi đó. Để đi qua từ \(3\) con đường trở lên, JOI phải đổi taxi tại một thị trấn trên đường đi.
JOI chỉ được lên hoặc xuống taxi tại các thị trấn, và không được sử dụng phương tiện di chuyển nào khác. Hãy viết chương trình tìm tổng cước phí nhỏ nhất để JOI đi đến thị trấn \(N\).
Dữ liệu vào gồm \(1 + N + K\) dòng:
In ra một dòng chứa một số nguyên là tổng cước phí nhỏ nhất để JOI đi từ thị trấn \(1\) đến thị trấn \(N\).
Ví dụ 1
6 6
400 2
200 1
600 3
1000 1
300 5
700 4
1 2
2 3
3 6
4 6
1 5
2 4
700
Mạng lưới thị trấn và đường trong ví dụ có thể biểu diễn như sau. Các số trong ngoặc tròn biểu diễn thị trấn, các nét nối biểu diễn con đường.
(5)---(1)---(2)---(4)
| |
(3)---(6)
Để đến thị trấn \(6\) với tổng cước phí nhỏ nhất, JOI thực hiện như sau:
Tổng cước phí của hành trình này là \(400 + 300 = 700\), nên in ra \(700\).
JOI quyết định ăn tiểu long bao cho bữa trưa tại một nhà hàng Trung Hoa. Tiểu long bao là món ăn có nhân và nước súp nóng được bọc trong một lớp vỏ bột mì, nổi tiếng vì nước súp có thể bắn ra xung quanh khi ăn.
Phần ăn JOI gọi gồm \(N\) chiếc tiểu long bao có nhân hoặc nước súp khác nhau. Các chiếc bánh được xếp cách đều nhau trên một hàng, đánh số theo thứ tự từ \(1\) đến \(N\). Khoảng cách giữa chiếc bánh thứ \(i\) và chiếc bánh thứ \(j\) là \(|i - j|\).
JOI sẽ ăn các chiếc bánh theo một thứ tự nào đó. Ban đầu, độ ngon của tất cả các chiếc bánh đều bằng \(0\). Khi JOI ăn chiếc bánh thứ \(i\), nước súp của nó bắn ra xung quanh và rơi lên những chiếc bánh chưa được ăn nằm cách bánh \(i\) không quá \(D_i\). Độ ngon của mỗi chiếc bánh bị nước súp bắn trúng tăng thêm \(A_i\).
Cụ thể, khi chiếc bánh thứ \(i\) được ăn, nếu chiếc bánh thứ \(j\) vẫn chưa được ăn và thỏa mãn \(1 \le j \le N\), \(i - D_i \le j \le i + D_i\), thì độ ngon của chiếc bánh thứ \(j\) tăng thêm \(A_i\).
JOI muốn chọn thứ tự ăn sao cho tổng độ ngon của các chiếc bánh tại thời điểm ăn chúng là lớn nhất. Hãy viết chương trình tìm tổng độ ngon lớn nhất khi JOI ăn hết các chiếc bánh theo thứ tự tốt nhất.
Dữ liệu vào gồm \(3\) dòng:
In ra một dòng chứa tổng độ ngon lớn nhất của các chiếc bánh mà JOI ăn.
Ví dụ 1
5
1 0 1 1 2
0 2 6 3 4
20
Nếu ăn các chiếc bánh theo thứ tự \(5 \to 3 \to 1 \to 2 \to 4\), tổng độ ngon là \(20\). Không có thứ tự ăn nào cho tổng độ ngon lớn hơn \(20\), nên đây là giá trị tốt nhất.
Ví dụ 2
10
5 2 7 2 6 5 3 5 3 6
8 7 8 4 0 6 0 10 10 0
237