F. Special Matrices

http://codeforces.com/contest/489/problem/F

http://blog.lightning34.cn/?p=107

 1     public static void main(String[] args) {
 2         n = io.nextInt();
 3         m = io.nextInt();
 4         mod = io.nextInt();
 5 
 6         String s;
 7         for (int i = 0; i < m; i++) {
 8             s = io.nextLine();
 9             while (s.length() == 0) s = io.nextLine();
10             for (int j = 0; j < s.length(); j++) y[j] += s.charAt(j) - '0';
11         }
12 
13         for (int i = 0; i < n; i++) sum[y[i]]++;
14         dp[sum[0]][sum[1]] = 1;
15 
16         //0的个数
17         for (int i = n; i >= 0; i--) {
18             //1的个数
19             for (int j = n; j >= 0; j--) {
20                 if (j >= 2) dp[i][j - 2] = (dp[i][j - 2] + dp[i][j] * j * (j - 1) / 2) % mod;
21                 if (i >= 1) dp[i - 1][j] = (dp[i - 1][j] + dp[i][j] * i * j) % mod;
22                 if (i >= 2) dp[i - 2][j + 2] = (dp[i - 2][j + 2] + dp[i][j] * i * (i - 1) / 2) % mod;
23             }
24         }
25         System.out.println(dp[0][0]);
26     }

猜你喜欢

转载自www.cnblogs.com/towerbird/p/11369781.html