Submission #1034110

#TimeUsernameProblemLanguageResultExecution timeMemory
1034110anHiepTents (JOI18_tents)C++14
0 / 100
0 ms348 KiB
#include <bits/stdc++.h> using namespace std; const int mod = 1e9 + 7; int dp[3003][3003]; int dv; int bp(int a, int b){ if(b == 0) return 1; if(b == 1) return a; int k = bp(a, b/2); k = (k * k) % mod; if(b % 2 == 0) return k; return (a * k) % mod; } int cal(int i, int j){ if(i < 0 || j < 0) return 0; if(dp[i][j] != 0) return dp[i][j]; int ans = 0; ans = (ans + cal(i - 1, j)) % mod; ans = (ans + cal(i - 1, j - 2) * j % mod * (j - 1) % mod * dv % mod); ans = (ans + cal(i - 2, j - 1) * j % mod * (j - 1) % mod); ans = (ans + cal(i - 1, j - 1) * j % mod * 4 % mod); return dp[i][j] = ans; } int main(){ int n, m; cin >> n >> m; dv = bp(2, mod - 2); for(int i = 0; i <= n; i++) dp[i][0] = 1; for(int i = 0; i <= m; i++) dp[0][i] = 1; cout << ((cal(n, m) - 1)% mod + mod)%mod; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...