trang chủ / bài tập / evolplan

Kế hoạch tiến hoá

Đề bài

Mô tả

Trên vùng Himalaya có n phòng tập (gym), được đánh số từ 1 đến n. Trong vùng có m loại Pokémon phân biệt, đánh số từ 1 đến m. Phòng tập thứ i chứa gi con Pokémon (có thể có nhiều con cùng loại).

Tại một trại tiến hoá đặc biệt, người ta sẽ áp dụng cùng một kế hoạch tiến hoá cho mọi Pokémon. Kế hoạch tiến hoá là một hoán vị f của tập {1,2,,m}: mỗi Pokémon có loại x sẽ tiến hoá thành Pokémon có loại f(x). Lưu ý rằng f là một hoán vị nên hai loại khác nhau luôn cho ra hai loại khác nhau, còn một loại có thể tiến hoá thành chính nó.

Theo quy ước, một kế hoạch tiến hoá được xem là hợp lệ nếu sau khi tiến hoá tất cả Pokémon, trong mỗi phòng tập và với mỗi loại Pokémon, số lượng Pokémon loại đó trước và sau khi tiến hoá là như nhau.

Hãy đếm số kế hoạch tiến hoá hợp lệ. Vì kết quả có thể rất lớn, in ra phần dư khi chia cho 109+7.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên nm.
  • n dòng tiếp theo, dòng thứ i bắt đầu bằng số nguyên gi — số Pokémon trong phòng tập thứ i, theo sau là gi số nguyên biểu thị loại của các Pokémon đó (mỗi số nằm trong đoạn [1,m]).

Dữ liệu ra

Một số nguyên duy nhất — số kế hoạch tiến hoá hợp lệ, lấy phần dư cho 109+7.

Ràng buộc

  • 1n105
  • 1m106
  • 1gi105
  • Tổng gi5·105.

Ví dụ

Input Output Giải thích
2 3
2 1 2
2 2 3
1 Chỉ có duy nhất kế hoạch f giữ nguyên tất cả các loại.
1 3
3 1 2 3
6 Mọi hoán vị của {1,2,3} đều hợp lệ vì phòng tập có đúng một con của mỗi loại.
2 4
2 1 2
3 2 3 4
2 Có thể giữ nguyên hoặc đổi vai trò của loại 34 (cả hai chỉ xuất hiện một lần trong cùng phòng tập thứ 2).
3 7
2 1 2
2 3 4
3 5 6 7
24 Trong mỗi cặp/bộ ba xuất hiện cùng một bộ phòng tập với cùng số lượng, các loại có thể hoán đổi tự do. Hai loại đầu cho 2!, hai loại giữa cho 2!, ba loại cuối cho 3!, tổng cộng 2·2·3!=24.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0