結果
問題 |
No.2668 Trees on Graph Paper
|
ユーザー |
|
提出日時 | 2024-03-08 23:46:46 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
MLE
|
実行時間 | - |
コード長 | 523 bytes |
コンパイル時間 | 2,444 ms |
コンパイル使用メモリ | 249,144 KB |
実行使用メモリ | 550,256 KB |
最終ジャッジ日時 | 2024-09-29 20:53:52 |
合計ジャッジ時間 | 18,859 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 29 MLE * 4 |
ソースコード
#include <bits/stdc++.h> using namespace std; using ll=long long; int main(){ ll n,m; cin>>n>>m; vector<vector<ll>> dp(2*n,vector<ll>(3)); dp[1][2]=1%m; dp[2][1]=1%m; dp[2][2]=1%m; dp[3][0]=1%m; dp[3][1]=2%m; dp[3][2]=3%m; ll ans=1; for(ll i=4;i<2*n;i++){ dp[i][0]=(dp[i-1][1]+dp[i-1][0])%m; dp[i][1]=(dp[i-1][0]*(i-2)%m+dp[i-1][1]+dp[i-1][2])%m; dp[i][2]=(dp[i-1][0]*((i-2)*(i-1)%m)+dp[i-1][1]*(i-1)%m+dp[i-1][2])%m; if(i&1)ans=ans*dp[i][0]%m; } for(ll i=1;i<2*n;i++)ans=ans*i%m; cout<<ans<<endl; }