1 条题解
-
0
自动搬运
来自洛谷,原作者为

Hootime
「记忆会告诉你一切,它诉说着人们心中最深的愿望,一个互相理解的世界已然诞生,只是再次陷入了沉睡。」「它会回来,它从未离开。」搬运于
2025-08-24 21:16:46,当前版本为作者最后更新于2024-11-09 08:23:54,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
一道水题。——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); } // 感谢 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
- 上传者