1 条题解

  • 0
    @ 2025-8-24 21:16:47

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar Hootime
    「记忆会告诉你一切,它诉说着人们心中最深的愿望,一个互相理解的世界已然诞生,只是再次陷入了沉睡。」「它会回来,它从未离开。」

    搬运于2025-08-24 21:16:46,当前版本为作者最后更新于2024-11-09 08:23:54,作者可能在搬运后再次修改,您可在原文处查看最新版

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

    以下是正文


    一道水题。——yuruilin2026

    形式化题意

    nn 个元素 mm 次操作,第 ii 次操作能让 cc 中的一个元素加上 aia_i。求最后 cc 中最大元素的最大值。

    思路

    既然题目要求最大元素的最大值,那我们可以重点培养一个元素,使它最大化。很显然,重点培养 cc 中原本就是最大的元素最优。因此,只要将正数都加给最大值,把 00 和负数扔给其他元素就行了。

    但是有一种特殊情况:在 cc 只有一个元素的情况下,就只能全加了。

    代码

    注释版

    #include <bits/stdc++.h>
    using namespace std;
    int n, m, maxn = INT_MIN;
    int main(){
        scanf("%d %d", &n, &m);
        for(int i = 1, tmp; i <= n; i++){
            scanf("%d", &tmp);
            maxn = max(maxn, tmp); // 找最大值
        }
        for(int i = 1, tmp; i <= m; i++){
            scanf("%d", &tmp);
            if(n == 1) maxn += tmp; // 只有一个元素就全加
            else if(tmp > 0) maxn += tmp; // 否则只要正数
        }
        printf("%d", maxn);
    }
    // 感谢 yuruilin2026 的教导
    
    

    无注释版

    请不要复制代码。

    #include <bits/stdc++.h>
    using namespace std;
    int n, m, maxn = INT_MIN;
    int main(){
        scanf("%d %d", &n, &m);
        for(int i = 1, tmp; i <= n; i++){
            scanf("%d", &tmp);
            maxn = max(maxn, tmp);
        }
        for(int i = 1, tmp; i <= m; i++){
            scanf("%d", &tmp);
            if(n == 1) maxn += tmp;
            else if(tmp > 0) maxn += tmp;
        }
        printf("%d", maxn);
    }
    
    
    • 1

    信息

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