1 条题解

  • 0
    @ 2025-4-9 16:14:00
    #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
    上传者