合并果子 ({no}easy) 题解
2024-08-03 18:41:24
发布于:广东
#include<bits/stdc++.h>
#include<vector>
using namespace std;
int a,n,ans;
vector<int>v;
int main(){
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&ans);
v.push_back(ans);
}
sort(v.begin(),v.end());
int l=0,sum =0;
while(v.size()!=1){
sum+=v[0]+v[1];
v[1]+=v[0];
auto it = v.begin();
v.erase(it);
sort(v.begin(),v.end());
}
printf("%d",sum);
return 0;
}
全部评论 2
主播主播,sort还是太吃操作了,有没有更简便的方法?(
2025-03-09 来自 广东
0有的兄弟有的
2025-03-09 来自 江苏
0这么强的方法当然不止有一个了
2025-03-09 来自 江苏
0有的有的,像这样的方法还不止1个,deepseek
2025-03-21 来自 广东
0
#include<bits/stdc++.h>
using namespace std;
int num[10010];
int n;
int sum;
priority_queue<int,vector<int>,greater<int>>q;
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>num[i];
q.push(num[i]);
}
while(q.size()>1){
int a=q.top();
sum+=a;
q.pop();
int b=q.top();
sum+=b;
q.pop();
q.push(a+b);
}
cout<<sum;
return 0;
}2025-03-09 来自 北京
0
有帮助,赞一个