| # | Bài tập | Điểm | Thời gian: | Giới hạn bộ nhớ |
|---|---|---|---|---|
| 1 | JOI 2012 - Fortune Telling | 100 (p) | 2.0s | 64M |
| 2 | JOI 2012 - Kangaroo | 100 (p) | 2.0s | 64M |
| 3 | JOI 2012 - Sokoban | 100 (p) | 2.0s | 512M |
Chủ tịch K rất thích bói toán và thường thử nhiều cách bói khác nhau. Hôm nay, ông quyết định dùng các lá bài để dự đoán thành tích của đoàn Nhật Bản tại kỳ thi IOI năm nay.
Cách bói được thực hiện như sau:
Cụ thể, nếu ký hiệu lá bài ở hàng \(a\), cột \(b\) là \((a,b)\) thì thao tác thứ \(i\) lật tất cả các lá bài thỏa mãn:
Nhận ra rằng phải lật bài quá nhiều lần, chủ tịch K quyết định không thực hiện các thao tác bằng bài thật nữa.
Cho \(M\), \(N\), \(K\) và thông tin của \(K\) thao tác, hãy tính số lá bài ngửa mặt sau khi thực hiện tất cả các thao tác.
Đọc dữ liệu từ đầu vào chuẩn:
In ra đầu ra chuẩn một dòng chứa số lá bài ngửa mặt sau \(K\) thao tác.
Chủ tịch K quan tâm đến chuột túi và quyết định quan sát hành vi của chúng. Có \(N\) con chuột túi được đánh số từ \(1\) đến \(N\), mỗi con có một chiếc túi. Con thứ \(i\) có kích thước cơ thể là \(A_i\) và kích thước túi là \(B_i\). Túi luôn nhỏ hơn cơ thể của chính con chuột túi đó, tức là \(B_i < A_i\).
Ban đầu, không có con chuột túi nào nằm trong túi của con khác. Chúng lặp lại thao tác sau cho đến khi không thể thực hiện thêm thao tác nào:
Chọn hai con chuột túi \(i\) và \(j\) sao cho \(A_i < B_j\), con \(i\) không nằm trong túi của bất kỳ con nào khác và túi của con \(j\) đang trống. Khi đó, con \(i\) chui vào túi của con \(j\).
Thao tác này vẫn được phép nếu trong túi của con \(i\) đã có một con chuột túi khác, hoặc nếu con \(j\) đang nằm trong túi của một con khác. Khi con \(i\) di chuyển, tất cả những con nằm bên trong nó cũng di chuyển theo. Nếu có nhiều cặp \((i,j)\) hợp lệ, không biết cặp nào sẽ được chọn.
Cho kích thước cơ thể và kích thước túi của từng con chuột túi, hãy tính số trạng thái cuối cùng khác nhau có thể xuất hiện, lấy phần dư khi chia cho \(1\,000\,000\,007\).
Đọc dữ liệu từ đầu vào chuẩn:
In ra đầu ra chuẩn một dòng chứa phần dư của số trạng thái cuối cùng khác nhau khi chia cho \(1\,000\,000\,007\).
Các tỉ lệ trên là các điều kiện tích lũy; không cộng chúng thành các nhóm điểm độc lập.
Ví dụ 1
5
4 3
3 1
6 5
2 1
4 2
4
Các con \(1\), \(2\) và \(5\) có thể chui vào túi của con \(3\). Con \(4\) có thể chui vào túi của con \(1\) hoặc con \(3\), còn con \(3\) không thể chui vào túi của bất kỳ con nào khác. Có bốn trạng thái cuối cùng:
Ví dụ 2
20
7 6
7 3
10 1
7 2
10 7
10 7
8 6
3 2
5 4
7 2
3 2
10 9
9 4
7 2
8 6
5 4
8 6
7 4
10 5
9 3
21060
Sokoban là một trò chơi giải đố được yêu thích từ lâu. Trò chơi diễn ra trên một bảng gồm \(M\) hàng và \(N\) cột ô vuông. Người chơi điều khiển một nhân vật để đẩy thùng đến ô đích. Trong bài này, chỉ có một chiếc thùng.
Một số ô trên bảng là tường. Nhân vật, thùng và đích đều nằm trên những ô không phải tường; nhân vật và thùng không bao giờ đi ra ngoài bảng. Có thể thực hiện một trong hai thao tác sau:
Hai ô được gọi là kề nhau nếu chúng có chung một cạnh.
Trong các hình minh họa, # là tường, @ là nhân vật, O là thùng, X là đích và . là các ô còn lại. Xét trạng thái sau:
Có thể đưa thùng đến đích bằng các thao tác:
Ngược lại, không thể đưa thùng đến đích từ trạng thái sau:
Khi vị trí các bức tường và ô đích đã cố định, bạn muốn biết có bao nhiêu cách đặt nhân vật và thùng để tạo thành một trò Sokoban có thể giải được. Một cách đặt có thể giải được nếu có thể thực hiện một dãy thao tác để đưa thùng đến đích.
Ban đầu, nhân vật và thùng phải nằm ở hai ô khác nhau; cả hai ô đều không phải tường và không phải ô đích.
Hãy đếm số cách đặt thỏa mãn yêu cầu.
Đọc dữ liệu từ đầu vào chuẩn:
# biểu diễn tường, X biểu diễn đích và . biểu diễn các ô còn lại, cũng là những ô có thể chọn làm vị trí ban đầu của nhân vật hoặc thùng. Ký tự X xuất hiện đúng một lần.In ra đầu ra chuẩn một dòng chứa số cách đặt nhân vật và thùng để tạo thành một trò Sokoban có thể giải được.
#, X, ..X.Ví dụ 1
3 5
..#..
.X...
##..#
9
Ví dụ 2
2 3
.X.
...
0
Không có cách đặt nhân vật và thùng nào tạo thành một trò Sokoban có thể giải được.
Ví dụ 3
4 7
.#.#.##
##.#..#
....X..
##.#...
24