Submission #60066

#TimeUsernameProblemLanguageResultExecution timeMemory
60066XmtosXTents (JOI18_tents)C++17
100 / 100
425 ms59308 KiB
#include <bits/stdc++.h> using namespace std; long long dp1(long long x,long long rem); const int N=3003,mod=1e9+7; int n,m; long long memo[N][N],memo1[N][N]; long long dp (long long x,long long rem) { if (x==m) { return (rem!=n); } long long &ret= memo[x][rem]; if (ret) return ret; ret= dp(x+1,rem); if (rem>=2) { ret+= dp(x+1,rem-2)*(rem*(rem-1)/2); ret%=mod; } if (rem>=1) { ret+= dp(x+1,rem-1)*rem*4; ret%=mod; if (x+2<=m) { ret+= (dp(x+2,rem-1)*rem*(m-x-1)); ret%=mod; } } return ret; } int main() { cin >>n>>m; cout <<dp(0,n); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...