1 条题解

  • 0
    @ 2025-6-7 10:39:16
    #include <bits/stdc++.h>
    #define int long long
    using namespace std;
    int n;
    int d[35];
    int f[35][35];
    int g[35][35];
    void dfs(int l, int r)
    {
        if (l > r)
            return;
        int root = g[l][r];
        cout << root << " ";
        dfs(l, root - 1);
        dfs(root + 1, r);
    }
    signed main()
    {
        ios::sync_with_stdio(false);
        cin.tie(0);
        cin >> n;
        for (int i = 1; i <= n; i++)
            cin >> d[i];
        for (int len = 1; len <= n; len++)
        {
            for (int l = 1; l + len - 1 <= n; l++)
            {
                int r = l + len - 1;
                if (len == 1)
                {
                    f[l][r] = d[l];
                    g[l][r] = l;
                    continue;
                }
                for (int root = l; root <= r; root++)
                {
                    if (root == l)
                    {
                        if (f[root + 1][r] + d[root] > f[l][r])
                        {
                            f[l][r] = f[root + 1][r] + d[root];
                            g[l][r] = root;
                        }
                    }
                    else if (root == r)
                    {
                        if (f[l][root - 1] + d[root] > f[l][r])
                        {
                            f[l][r] = f[l][root - 1] + d[root];
                            g[l][r] = root;
                        }
                    }
                    else
                    {
                        if (f[l][root - 1] * f[root + 1][r] + d[root] > f[l][r])
                        {
                            f[l][r] = f[l][root - 1] * f[root + 1][r] + d[root];
                            g[l][r] = root;
                        }
                    }
                }
            }
        }
        cout << f[1][n] << "\n";
        dfs(1, n);
        return 0;
    }
    
    • 1

    信息

    ID
    1874
    时间
    1000ms
    内存
    128MiB
    难度
    4
    标签
    递交数
    13
    已通过
    11
    上传者