結果
問題 |
No.93 ペガサス
|
ユーザー |
![]() |
提出日時 | 2025-09-08 11:15:57 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,255 bytes |
コンパイル時間 | 1,260 ms |
コンパイル使用メモリ | 162,840 KB |
実行使用メモリ | 14,976 KB |
最終ジャッジ日時 | 2025-09-08 11:16:01 |
合計ジャッジ時間 | 2,541 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 2 WA * 14 |
ソースコード
#include<bits/stdc++.h> using namespace std; const int N=1e3+10,mod=1e9+7; int n,dp[N][N][2][2]; inline int add(int a,int b){ return ((a%mod)+(b%mod)+mod+mod)%mod; } inline int mul(int a,int b){ return ((a%mod)*(b%mod))%mod; } signed main(){ ios::sync_with_stdio(false); cin.tie(0);cout.tie(0); cin>>n; dp[1][0][0][0]=1; dp[2][0][0][0]=2; for(int i=3;i<=n;i++){ for(int j=0;j<=i-2;j++){ dp[i][j][0][0]=add(dp[i][j][0][0],mul(dp[i-1][j][0][0],i-j-2)); dp[i][j][0][0]=add(dp[i][j][0][0],mul(dp[i-1][j][1][0],i-j-1)); dp[i][j][0][0]=add(dp[i][j][0][0],add(mul(dp[i-1][j+1][1][0],j),mul(dp[i-1][j+1][0][0],j+1))); dp[i][j][0][0]=add(dp[i][j][0][0],add(dp[i-1][j+1][0][1],dp[i-1][j+1][1][1])); dp[i][j][1][0]=add(dp[i][j][1][0],add(mul(dp[i-1][j][0][1],i-j-2),mul(dp[i-1][j][1][1],i-j-1))); dp[i][j][1][0]=add(dp[i][j][1][0],add(mul(dp[i-1][j+1][1][1],max(j-1,0)),mul(dp[i-1][j+1][0][1],j))); dp[i][j][0][1]=(((j)?dp[i-1][j-1][0][0]*2+dp[i-1][j-1][1][0]:0)+dp[i-1][j][1][0])%mod; dp[i][j][1][1]=(((j)?dp[i-1][j-1][0][1]*2+dp[i-1][j-1][1][1]:0)+dp[i-1][j][1][1])%mod; } } cout<<dp[n][0][0][0]; return 0; }