60分 4个TLE 帮忙看看为什么,有过了和没过的比较
查看原帖
60分 4个TLE 帮忙看看为什么,有过了和没过的比较
470487
Poifect楼主2022/10/4 15:18

评测记录

感觉和题解好像也没多大区别,为什么会爆TLE,上面的是我按照第一篇题解改的,下面的是原来的

    #include <bits/stdc++.h>
    using namespace std;

    int read()
    {
        int x = 0, f = 1;
        char ch = getchar();
        while (!isdigit(ch))
        {
            if (ch == '-')
                f = -1;
            ch = getchar();
        }
        while (isdigit(ch))
        {
            x = x * 10 + ch - '0';
            ch = getchar();
        }
        return x * f;
    }

    int n, w[6010], f[6010][2], root = 1;
    vector<int> e[6010];
    void dfs(int u)
    {
        f[u][0] = 0, f[u][1] = w[u];
        for (int i = 0; i < (int)e[u].size();i++)
        {
            int v = e[u][i];
            dfs(v);
            f[u][0] += max(f[v][0], f[v][1]);
            f[u][1] += f[v][0];
        }
    }

    int main()
    {
        n = read();
        for (int i = 1; i <= n; i++)
            w[i] = read();
        for (int i = 1; i < n; i++)
        {
            int x = read(), y = read();
            e[y].push_back(x);
            if (x == root)
                root = y;
        }
        dfs(root);
        cout << max(f[root][0], f[root][1]);
        return 0;
    }

    /*
    int n, w[6010], root = 1,;
    vector<int> e[6010];
    int dfs(int u, bool mark)
    {
        int maxw1 = 0, maxw2 = 0;
        if (!mark)
        {
            maxw1 = w[u];
            for (int i = 0; i < (int)e[u].size(); i++)
                maxw1 += dfs(e[u][i], 1);
        }
        for (int i = 0; i < (int)e[u].size(); i++)
            maxw2 += dfs(e[u][i], 0);
        return max(maxw1,maxw2);
    }

    int main()
    {
        n = read();
        for (int i = 1; i <= n; i++)
            w[i] = read();
        for (int i = 1; i < n; i++)
        {
            int x = read(), y = read();
            e[y].push_back(x);
            if (x == root)
                root = y;
        }
        cout << dfs(root, 0);
        return 0;
    }

    60分解,其他TLE
    */
2022/10/4 15:18
加载中...