結果
問題 | No.1667 Forest |
ユーザー |
![]() |
提出日時 | 2021-09-03 21:40:47 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 159 ms / 3,000 ms |
コード長 | 897 bytes |
コンパイル時間 | 1,866 ms |
コンパイル使用メモリ | 173,076 KB |
実行使用メモリ | 6,820 KB |
最終ジャッジ日時 | 2024-12-15 11:16:47 |
合計ジャッジ時間 | 3,515 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 15 |
ソースコード
#include <bits/stdc++.h>using namespace std;int main(){int N;long long MOD;cin >> N >> MOD;vector<vector<long long>> binom(N + 1, vector<long long>(N + 1, 1));for (int i = 2; i <= N; i++){for (int j = 1; j < i; j++){binom[i][j] = (binom[i - 1][j - 1] + binom[i - 1][j]) % MOD;}}vector<long long> c(N + 1, 1);for (int i = 3; i <= N; i++){for (int j = 0; j < i - 2; j++){c[i] *= i;c[i] %= MOD;}}vector<vector<long long>> dp(N + 1, vector<long long>(N, 0));dp[0][0] = 1;for (int i = 0; i < N; i++){for (int j = 0; j < N; j++){if (dp[i][j] > 0){for (int k = 1; k <= N - i; k++){dp[i + k][j + k - 1] += dp[i][j] * binom[N - i - 1][k - 1] % MOD * c[k] % MOD;dp[i + k][j + k - 1] %= MOD;}}}}for (int i = 0; i < N; i++){cout << dp[N][i] << endl;}}