题解[GESP202606 五级]排排坐
2026-07-09 14:17:32
发布于:四川
4阅读
0回复
0点赞
大家好,我是恺恺,这次我们来看看GESP五级的第二题。
本质难度很低,但是需要一些思考。
思路分析:
首先我们可以来想想,目标是什么?没错,让总和最大,怎么做呢?
我们先好好理解下题目,总和怎么算?不过是遍历每一个数,然后总数=该小朋友手上的数字*他左边的人数(包括他)
但是还有一个重点!easy题目中提到了最大,也就是说,每次遍历的和要大!怎么做呢?要让每次的和更大,左边的人数应该变不了了(1,2,3...n),很容易想到,只能变小朋友手上的数字了,又要让和大,正序排序!!!!
重点程序:
计算部分:
for(int i=1;i<=n;i++){
int plus=a[i]*i; //计算
sum+=plus;
}
完整代码:
# include <bits/stdc++.h> //邪恶万能头
using namespace std;
int main(){
int n,a[1005]={},sum=0;
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
sort(a+1,a+n+1); //排序
for(int i=1;i<=n;i++){
int plus=a[i]*i; //计算
sum+=plus;
}
cout<<sum;
return 0;
}
这里空空如也








有帮助,赞一个