結果
問題 |
No.535 自然数の収納方法
|
ユーザー |
|
提出日時 | 2025-03-14 23:11:46 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 210 ms / 2,000 ms |
コード長 | 809 bytes |
コンパイル時間 | 3,193 ms |
コンパイル使用メモリ | 192,984 KB |
実行使用メモリ | 213,196 KB |
最終ジャッジ日時 | 2025-03-14 23:11:57 |
合計ジャッジ時間 | 4,923 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 23 |
ソースコード
#include<bits/stdc++.h> using namespace std; #define int long long #define mod 1000000007 #define N 4100 int n,dp1[N][N],pre1[N][N],dp2[N][N],pre2[N][N]; signed main(){ cin>>n; for(int i=1;i<=n;i++){ dp1[0][i]=(i==1); dp2[0][i]=(i!=1); } for(int i=1;i<=2*n;i++){ pre1[0][i]=pre1[0][i-1]+dp1[0][i]; pre2[0][i]=pre2[0][i-1]+dp2[0][i]; } for(int i=1;i<=n-1;i++){ for(int j=1;j<=n;j++){ dp1[i][j]+=pre1[i-1][j+max(1LL,i-1)-1]; dp2[i][j]+=pre2[i-1][j+max(1LL,i-1)-1]; dp1[i][j]%=mod; dp2[i][j]%=mod; } for(int j=1;j<=2*n;j++){ pre1[i][j]=pre1[i][j-1]+dp1[i][j]; pre2[i][j]=pre2[i][j-1]+dp2[i][j]; pre1[i][j]%=mod; pre2[i][j]%=mod; } } cout<<(pre1[n-1][n-1]+pre2[n-1][n])%mod<<endl; return 0; }