| # | Bài tập | Điểm | Thời gian: | Giới hạn bộ nhớ |
|---|---|---|---|---|
| 1 | JOI 2017 - Cultivation | 100 (p) | 2.0s | 256M |
| 2 | JOI 2017 - Port Facility | 100 (p) | 5.0s | 1G |
| 3 | JOI 2017 - Sparklers | 100 (p) | 2.0s | 256M |
Trong năm 21XX, cư dân hành tinh IOI dự định di cư đến một hành tinh mới được phát hiện. Trên hành tinh mới có một cánh đồng hình chữ nhật gồm \(R\) hàng và \(C\) cột. Các cột chạy theo hướng nam-bắc, còn các hàng chạy theo hướng đông-tây. Ô ở hàng thứ \(i\) tính từ phía bắc và cột thứ \(j\) tính từ phía tây được gọi là ô \((i,j)\). Góc tây bắc là ô \((1,1)\) và góc đông nam là ô \((R,C)\).
Mỗi năm, cư dân hành tinh IOI chọn một hướng gió thổi qua cánh đồng: đông, tây, nam hoặc bắc.
Để canh tác trên hành tinh mới, họ sẽ trồng "cỏ JOI" trên toàn bộ cánh đồng. Vào mùa xuân năm đầu tiên sau khi di cư, cỏ JOI đã mọc ở \(N\) ô.
Phạm vi của cỏ JOI được mở rộng nhờ gió. Mỗi mùa hè, hạt của cỏ JOI bị gió thổi theo hướng đã chọn, di chuyển đúng một ô rồi rơi xuống. Nếu hạt rơi vào một ô thuộc cánh đồng chưa có cỏ JOI, ô đó sẽ có cỏ JOI vào mùa xuân năm sau. Một khi đã có cỏ JOI, ô đó sẽ luôn có cỏ JOI trong những năm tiếp theo.
Hãy chọn hướng gió thích hợp qua từng năm để toàn bộ cánh đồng có cỏ JOI sớm nhất có thể.
Tính số năm nhỏ nhất cần thiết để tất cả các ô trên cánh đồng đều có cỏ JOI.
In ra một số nguyên duy nhất: số năm nhỏ nhất cần thiết để toàn bộ cánh đồng có cỏ JOI.
Ví dụ 1
3 4
3
1 2
1 4
2 3
3
Ban đầu, ba ô \((1,2)\), \((1,4)\) và \((2,3)\) có cỏ JOI. Nếu hướng gió trong ba năm đầu lần lượt là tây, nam, nam thì sau ba năm mọi ô đều có cỏ. Số năm mà từng ô bắt đầu có cỏ là:
1 0 1 0
2 1 0 2
3 2 2 3
Không thể phủ kín cánh đồng trong ít hơn ba năm.
Ví dụ 2
4 4
4
1 1
1 4
4 1
4 4
4
Mỗi ngày có nhiều container được tàu thủy đưa đến cảng JOI, rồi được xe tải vận chuyển đi khắp cả nước.
Cảng JOI rất hẹp và chỉ có hai khu vực để đặt container. Tại mỗi khu vực, có thể xếp chồng một số lượng bất kỳ container theo phương thẳng đứng.
Vì lý do an toàn, khi một container đến bằng tàu thủy, nó phải được đặt vào một trong hai khu vực; nếu khu vực đó đã có container thì container mới phải được đặt lên trên cùng. Khi một container rời cảng bằng xe tải, nó phải được lấy từ trên cùng của một trong hai chồng.
Hôm nay có \(N\) container đến cảng JOI và sau đó tất cả đều sẽ rời cảng bằng xe tải. Với mỗi container, bạn biết thời điểm nó đến và thời điểm nó rời cảng.
Tính số cách đặt và lấy các container hợp lệ, lấy phần dư theo \(1\,000\,000\,007\).
Hai cách được xem là khác nhau nếu có ít nhất một container được đặt vào hai khu vực khác nhau trong hai cách đó.
In ra số cách đặt và lấy container hợp lệ, lấy phần dư theo \(1\,000\,000\,007\).
Ví dụ 1
4
1 3
2 5
4 8
6 7
4
Gọi hai khu vực là A và B. Bốn cách hợp lệ ứng với việc lần lượt đặt các container \(1,2,3,4\) vào:
Ví dụ 2
3
1 4
2 5
3 6
0
Ví dụ 3
5
1 4
2 10
6 9
7 8
3 5
8
Ví dụ 4
8
1 15
2 5
3 8
4 6
14 16
7 9
10 13
11 12
16
JOI-kun và các bạn sẽ chơi pháo que. Có tổng cộng \(N\) người. Sau khi được châm, một que pháo cháy đúng \(T\) giây.
Ban đầu, mọi người đứng dọc theo một con đường thẳng chạy theo hướng đông-tây. Họ được đánh số từ \(1\) đến \(N\). Với mọi \(i<j\), người thứ \(i\) đứng về phía tây của người thứ \(j\), hoặc hai người đứng cùng một vị trí. Khoảng cách từ người thứ \(i\) đến người ở xa nhất về phía tây, tức người thứ nhất, là \(X_i\) mét. JOI-kun là người thứ \(K\).
Chiếc bật lửa chỉ còn đủ nhiên liệu để châm một que pháo, nên trước tiên họ châm que pháo của JOI-kun. Sau đó, các que khác chỉ có thể được châm bằng cách chạm vào một que đang cháy. Mỗi lần truyền lửa phải thỏa mãn:
Thời gian cần để truyền lửa được xem là bằng \(0\).
Mọi người có thể chạy về phía đông hoặc phía tây với tốc độ tùy ý, nhưng để bảo đảm an toàn, tốc độ của mỗi người không được vượt quá \(s\) mét mỗi giây, trong đó \(s\) là một số nguyên không âm.
Tính số nguyên nhỏ nhất \(s\) sao cho có thể châm được tất cả các que pháo.
In ra số nguyên nhỏ nhất \(s\) sao cho có thể châm tất cả các que pháo nếu giới hạn tốc độ là \(s\) mét mỗi giây.
Ví dụ 1
3 2 50
0
200
300
2
Với giới hạn \(2\) m/s, người thứ nhất chạy về đông, còn người thứ hai và thứ ba chạy về tây. Sau \(50\) giây, người thứ hai truyền lửa cho người thứ nhất. Tiếp đó, người thứ nhất chạy về đông và người thứ ba chạy về tây, đều với tốc độ \(2\) m/s. Sau \(25\) giây, người thứ nhất truyền lửa cho người thứ ba. Giới hạn \(1\) m/s là không đủ.
Ví dụ 2
3 2 10
0
200
300
8
Với giới hạn \(8\) m/s, ban đầu người thứ nhất và thứ hai chạy về đông, người thứ ba chạy về tây. Sau \(3\) giây, người thứ hai dừng lại; hai người còn lại tiếp tục chạy. Sau thêm \(6.5\) giây, người thứ hai và thứ ba gặp nhau nhưng chưa truyền lửa; cả hai dừng lại, còn người thứ nhất tiếp tục chạy. Sau thêm \(0.5\) giây, người thứ hai truyền lửa cho người thứ ba. Người thứ nhất tiếp tục chạy, còn người thứ ba chạy về tây với tốc độ \(8\) m/s. Sau thêm \(9\) giây, người thứ nhất và thứ ba gặp nhau, và người thứ ba truyền lửa cho người thứ nhất. Giới hạn \(7\) m/s là không đủ.
Ví dụ 3
20 6 1
0
2
13
27
35
46
63
74
80
88
100
101
109
110
119
138
139
154
172
192
6