Submission #887827

#TimeUsernameProblemLanguageResultExecution timeMemory
887827vjudge1Tents (JOI18_tents)C++17
100 / 100
132 ms70996 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long int #define pb push_back #define mp make_pair #define pii pair<int, int> #define all(x) x.begin(), x.end() #define u_map unordered_map const int maxn = 3e3 + 5, mod = 1e9 + 7; ll dp[maxn][maxn]; ll c(int a) { return (a * (a - 1) / 2) % mod; } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); int n, m; cin >> n >> m; for (int i = 0; i <= n; i++) { dp[i][0] = 1; } for (int i = 0; i <= m; i++) { dp[0][i] = 1; } for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { dp[i][j] = dp[i][j - 1]; dp[i][j] = (dp[i][j] + (((i) * 4 % mod) * dp[i - 1][j - 1] % mod)) % mod; dp[i][j] = (dp[i][j] + (((i) * (j - 1) % mod) * dp[i - 1][j - 2] % mod)) % mod; dp[i][j] = (dp[i][j] + c(i) * dp[i - 2][j - 1] % mod) % mod; } } cout << (dp[n][m] - 1 + mod) % mod; return 0; } // dp[1][1] = 4; // dp[2][1] = 9; // dp[1][2] = 9; // dp[1][3] = 15; // dp[3][1] = 15; // dp[2][3];
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...