제출 #59562

#제출 시각아이디문제언어결과실행 시간메모리
59562theknife2001Tents (JOI18_tents)C++17
48 / 100
1511 ms222764 KiB
#include <bits/stdc++.h> using namespace std; const int N=305; long long dp[N][N][N]; int n,m; long long mod=1e9+7; long long bt(int i, int j0, int j1) { if(i==n) { if(j0==m||j1!=0) return 0; return 1; } if(dp[i][j0][j1]!=-1) return dp[i][j0][j1]; long long x=bt(i+1,j0,j1); x%=mod; if(j0) x+=bt(i+1,j0-1,j1+1)*j0+bt(i+1,j0-1,j1)*j0*4; x%=mod; if(j1) x+=bt(i+1,j0,j1-1)*j1; x%=mod; if(j0>1) x+=(bt(i+1,j0-2,j1)*j0*(j0-1))/2; x%=mod; dp[i][j0][j1]=x; return x; } int main() { cin>>n>>m; memset(dp,-1,sizeof dp); cout<<bt(0,m,0)<<endl; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...