1 条题解

  • 0
    @ 2025-8-24 22:34:16

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar 银杉水杉秃杉
    原神OI堂主 QQ群853353679 详细主页在博客

    搬运于2025-08-24 22:34:16,当前版本为作者最后更新于2021-11-04 10:22:47,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    由题可得,要使得最终答案最大,就得使数列中每一个负数变成其绝对值加入答案中,也就是减去这个负数。假如 a1a_1 是负数,但由于 a1a_1 前面没有数可以减去它,所以 a1a_1 保持不变;而 a2ana_2 \sim a_n 中前面均有数可以减去它使其变为绝对值。所以最终的答案为$ans=a_1+\vert a_2\vert+\vert a_3\vert+\cdots+\vert a_n\vert$。

    #include <bits/stdc++.h>
    #define int long long//记得开 long long
    using namespace std;
    const int N = 1e5 + 10;
    int n, x, ans;
    signed main()
    {
        scanf("%lld%lld", &n, &x);
        ans = x;
        for (int i = 2; i <= n; i++)
        {
            scanf("%lld", &x);
            ans += x < 0 ? -x : x;
        }
        printf("%lld\n", ans);
        return 0;
    }
    
    • 1

    信息

    ID
    7201
    时间
    1000ms
    内存
    128MiB
    难度
    2
    标签
    递交数
    0
    已通过
    0
    上传者