1 条题解
-
0
#include <bits/stdc++.h> #define int long long #define mod 998244353 using namespace std; int n, m; bool e[405][405]; int dp[405][405]; int c[205][205]; signed main() { cin >> n >> m; for (int i = 1; i <= m; i++) { int u, v; cin >> u >> v; e[u][v] = e[v][u] = true; } for (int i = 1; i <= 2 * n; i++) dp[i][i - 1] = 1; c[0][0] = 1; for (int i = 1; i <= n; i++) for (int j = 0; j <= i; j++) if (j == 0 || j == i) c[i][j] = 1; else c[i][j] = c[i - 1][j - 1] + c[i - 1][j], c[i][j] %= mod; for (int len = 2; len <= 2 * n; len += 2) { for (int l = 1, r = l + len - 1; r <= 2 * n; l++, r++) { if (e[l][r]) dp[l][r] = dp[l + 1][r - 1]; for (int k = l + 1; k <= r - 1; k += 2) if (e[l][k]) { dp[l][r] += dp[l + 1][k - 1] * dp[k + 1][r] % mod * c[len / 2][(k - l + 1) / 2] % mod, dp[l][r] %= mod; } } } cout << dp[1][2 * n]; return 0; }
- 1
信息
- ID
- 13407
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 7
- 标签
- (无)
- 递交数
- 27
- 已通过
- 7
- 上传者