惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Blog — PlanetScale
Blog — PlanetScale
Webroot Blog
Webroot Blog
T
Troy Hunt's Blog
S
Secure Thoughts
S
Security @ Cisco Blogs
S
Security Affairs
Forbes - Security
Forbes - Security
W
WeLiveSecurity
H
Hacker News: Front Page
T
Threatpost
Google Online Security Blog
Google Online Security Blog
S
Schneier on Security
有赞技术团队
有赞技术团队
WordPress大学
WordPress大学
www.infosecurity-magazine.com
www.infosecurity-magazine.com
博客园 - Franky
腾讯CDC
IT之家
IT之家
博客园 - 聂微东
L
LINUX DO - 最新话题
罗磊的独立博客
Hacker News - Newest:
Hacker News - Newest: "LLM"
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园 - 三生石上(FineUI控件)
Hacker News: Ask HN
Hacker News: Ask HN
C
CXSECURITY Database RSS Feed - CXSecurity.com
C
Cybersecurity and Infrastructure Security Agency CISA
C
CERT Recently Published Vulnerability Notes
Know Your Adversary
Know Your Adversary
V
Vulnerabilities – Threatpost
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
博客园_首页
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Cisco Talos Blog
Cisco Talos Blog
S
SegmentFault 最新的问题
酷 壳 – CoolShell
酷 壳 – CoolShell
Hugging Face - Blog
Hugging Face - Blog
L
LINUX DO - 热门话题
美团技术团队
G
GRAHAM CLULEY
T
The Exploit Database - CXSecurity.com
AI
AI
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Jina AI
Jina AI
Help Net Security
Help Net Security
N
News | PayPal Newsroom
月光博客
月光博客
Spread Privacy
Spread Privacy
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
N
News and Events Feed by Topic

OneCoder

【CSP】CSP-J 2024 第一轮真题解析(二):阅读程序题 【CSP】CSP-J 2024 第一轮真题解析(一):单项选择题 【NOIP】2015真题解析 luogu-P2678 跳石头(适合GESP六级以上练习) 【GESP】C++六级练习 luogu-B2174, 完全背包 【NOIP】2005真题解析 luogu-P1048 采药(适合GESP六级以上练习) 【GESP】C++六级真题 luogu-P17013, [GESP202606 六级] 满二叉树 【GESP】C++六级真题 luogu-P17012, [GESP202606 六级] 条形蛋糕 【GESP】C++五级真题 luogu-P17011 [GESP202606 五级] 晚宴 【GESP】C++四级真题 luogu-B4558 [GESP202606 四级] 身高体重指数 【GESP】C++四级真题 luogu-B4557 [GESP202606 四级] 扫雷 【GESP】C++三级真题 luogu-B4556 [GESP202606 三级] 字符转换 【GESP】C++三级真题 luogu-B4555 [GESP202606 三级] 加密 【GESP】C++二级真题 luogu-B4554 [GESP202606 二级] 菱形 【GESP】C++二级真题 luogu-B4553 [GESP202606 二级] 完全平方数计数 【GESP】C++一级真题 luogu-B4551 [GESP202606 一级] 去旅行 【GESP】C++一级真题 luogu-B4552 [GESP202606 一级] 交税 【NOIP】2000真题解析 luogu-P1023 税收与补贴问题(适合GESP四、五级以上练习) 【NOIP】2000真题解析 luogu-P1022 计算器的改良(适合GESP四、五级以上练习) 【NOIP】2001真题解析 luogu-P1029 最大公约数和最小公倍数问题 【CSP】CSP-X 2018真题 11的倍数 luogu-B4075 (适合GESP三级及以上考生练习) 【CSP】CSP-X 2018真题 统计成绩 luogu-B4074 (适合GESP二级及以上考生练习) 【CSP】CSP-X 2018真题 快递费用 luogu-B4073 (适合GESP二级及以上考生练习) 【CSP】CSP-X 2018真题 小明的照片 luogu-B4072 (适合GESP一级及以上考生练习) 【GESP】C++四级练习 luogu-P1138 第 k 小整数 【NOIP】2008真题解析 luogu-P1125 笨小猴 【信奥业余科普】C++ 的奇妙之旅 29:别让 TLE 和 MLE 偷走你的分——复杂度估算与数据范围速查 【信奥业余科普】C++ 的奇妙之旅 28:规范比赛代码的钥匙——文件操作与输入输出重定向(freopen) 【CSP】CSP-J 2023真题 公路 luogu-P9749 (适合GESP四级及以上考生练习) 【信奥业余科普】C++ 的奇妙之旅 27:高效处理数据的利器——常用算法库(algorithm) 【CSP】CSP-J 2022真题 解密 luogu-P8814 (适合GESP四级及以上考生练习) 【信奥业余科普】C++ 的奇妙之旅 26:高效的键值对——映射(map)与多重映射(multimap) 【CSP】CSP-J 2022真题 乘方 luogu-P8813 (适合GESP二级及以上考生练习) 【信奥业余科普】C++ 的奇妙之旅 25:自动排序的利器——集合(set)与多重集合(multiset) 【CSP】CSP-J 2019真题 纪念品 luogu-P5662 (适合GESP六级及以上考生练习) 【信奥业余科普】C++ 的奇妙之旅 24:拆解 deque——分段连续的双端队列 【信奥业余科普】C++ 的奇妙之旅 23:主动限制的艺术——栈(stack)与队列(queue)
【GESP】C++五级真题 luogu-P17010 [GESP202606 五级] 排排坐
OneCoder · 2026-07-06 · via OneCoder

GESP C++五级2026年6月真题。本题考查排序与贪心策略,需要分析每个位置对总糖果数的贡献系数,从而确定最优排列方式。难度⭐⭐。本题在洛谷评定为普及-

luogu-P17010 [GESP202606 五级] 排排坐

题目要求

题目描述

老师正在和小朋友们分糖果。

小朋友们先在自己的手上写一个数字,然后坐成一排。

老师分发糖果的规则是:每个小朋友获得自己以及左侧所有小朋友的手上数字之和个糖果。

现在小朋友们都已经在自己手上写上了数字。

请帮小朋友们安排合适的座位顺序,使得小朋友们分到的糖果总量最大,输出这个最大值。

输入格式

输入 $2$ 行,

第一行为一个正整数 $n$,表示小朋友的个数;

第二行为 $n$ 个正整数 $a_1, a_2, \cdots, a_n$,表示小朋友们手上的数字,整数之间以空格分隔。

输出格式

输出一个整数,表示小朋友们可能分到的最大糖果总数量。

输入输出样例 #1

输入 #1
输出 #1

说明/提示

小朋友安排座位后从左向右每人手上数字依次是:$9, 8, 7, 5, 3$。

这时可以得到最多的糖果:$(9) + (9 + 8) + (9 + 8 + 7) + (9 + 8 + 7 + 5) + (9 + 8 + 7 + 5 + 3) = 111$。

数据范围

$1 \le n \le 1000$,$1 \le a_i \le 1000$。


题目分析

本题表面上是排列问题,但通过数学推导可以转化为一个经典的贪心问题。

1. 推导每个位置的贡献

假设小朋友们从左到右排列为 $a_1, a_2, \cdots, a_n$,则每个小朋友获得的糖果数为该位置的前缀和:

  • 第 $1$ 个小朋友得到:$a_1$
  • 第 $2$ 个小朋友得到:$a_1 + a_2$
  • 第 $3$ 个小朋友得到:$a_1 + a_2 + a_3$
  • $\cdots$
  • 第 $n$ 个小朋友得到:$a_1 + a_2 + \cdots + a_n$

将所有糖果加在一起,统计每个 $a_i$ 在总和中出现了多少次:

  • $a_1$ 出现在第 $1, 2, 3, \cdots, n$ 个小朋友的糖果中,共 $n$ 次
  • $a_2$ 出现在第 $2, 3, \cdots, n$ 个小朋友的糖果中,共 $n - 1$ 次
  • $a_i$ 出现在第 $i, i+1, \cdots, n$ 个小朋友的糖果中,共 $n - i + 1$ 次

因此,糖果总量为:

\[\text{Total} = n \cdot a_1 + (n-1) \cdot a_2 + (n-2) \cdot a_3 + \cdots + 1 \cdot a_n\]

即位置 $i$(从左到右,$1$ 开始编号)的贡献系数为 $n - i + 1$。

2. 贪心策略

由上述公式可知,越靠左的位置贡献系数越大($n, n-1, \cdots, 1$)。为了使总和最大,根据排序不等式(或直觉:大数配大系数),应将数字从大到小排列。

即将最大的数字放在最左边(系数 $n$),次大的放第二个位置(系数 $n-1$),以此类推。

3. 样例验证

数字 $7, 5, 8, 9, 3$ 降序排列为 $9, 8, 7, 5, 3$,总糖果数为:

\[5 \times 9 + 4 \times 8 + 3 \times 7 + 2 \times 5 + 1 \times 3 = 45 + 32 + 21 + 10 + 3 = 111\]

与样例输出一致。

4. 复杂度分析

  • 时间复杂度:排序 $O(n \log n)$,求和 $O(n)$,总体 $O(n \log n)$
  • 空间复杂度:存储数组 $O(n)$

5. 注意事项

  • 数据范围 $n \le 1000$,$a_i \le 1000$,最大总和约为 $1000 \times 1000 \times 1000 = 10^9$,需要使用 long long 类型存储结果,避免 int 溢出

示例代码

将数字降序排列后,按位置乘以对应的贡献系数累加即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
#include <algorithm>

int main() {
    int n;
    std::cin >> n;

    int a[1005];
    for (int i = 0; i < n; i++) {
        std::cin >> a[i];
    }

    // 降序排列:让最大的数字排在最左边,获得最大的贡献系数
    std::sort(a, a + n, std::greater<int>());

    // 计算糖果总量
    // 排序后 a[0] 是最大值,位于第 1 个位置,贡献系数为 n
    // a[1] 位于第 2 个位置,贡献系数为 n - 1
    // a[i] 位于第 i+1 个位置,贡献系数为 n - i
    long long total = 0;
    for (int i = 0; i < n; i++) {
        total += (long long)(n - i) * a[i];
    }

    std::cout << total << std::endl;
    return 0;
}


所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code

GESP 学习专题站:GESP WIKI

"luogu-"系列题目可在洛谷题库进行在线评测。

"bcqm-"系列题目可在编程启蒙题库进行在线评测。

欢迎加入Java、C++、Python技术交流QQ群(982860385),大佬免费带队,有问必答

欢迎加入C++ GESP/CSP认证学习QQ频道,考试资源总结汇总

欢迎加入C++ GESP/CSP学习交流QQ群(688906745),考试认证学员交流,互帮互助

GESP/CSP 认证学习微信公众号

GESP/CSP 认证学习微信公众号