1 条题解

  • 0
    @ 2025-10-8 16:58:14
    #include <bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    const int N = 7e5 + 10;
    int n, d[N];
    ll f[N], g[N];
    int main()
    {
        scanf("%d", &n);
        for (int i = 1; i <= n; i++) scanf("%d", &d[i]);
        f[n] = d[n]; g[n] = 0ll;
        for (int i = n - 1; i >= 1; i--)
        {
            if (f[i + 1] <= g[i + 1] + d[i]) f[i] = g[i + 1] + d[i], g[i] = f[i + 1]; 
            else                   f[i] = f[i + 1]     , g[i] = g[i + 1];
        }
        printf("%lld %lld\n", f[1], g[1]);
        return 0;
    }
    
    • 1

    *【动态规划】两头牛轮流捡硬币[USACO10JAN] Taking Turns G

    信息

    ID
    1697
    时间
    1000ms
    内存
    128MiB
    难度
    5
    标签
    递交数
    54
    已通过
    21
    上传者