5 条题解
-
2Martin8521 LV 3 @ 2021-09-12 10:56:01
#include <bits/stdc++.h> //万能头
using namespace std;
int main() {
int num, i,x = 0,ans = 0;
priority_queue<int,vector<int>, greater<int> >p; //greater让根节点最小
cin >> num;
for (i = 0;i < num;i++) {
cin >> x;
p.push(x); //放入数字
}
while (p.size() != 1) {
x = p.top();
p.pop();
x += p.top(); //将最大的两个相加
p.pop();
p.push(x); //将和放入队列
ans += x;
}
cout << ans << endl; //输出答案
} -
22021-08-20 13:55:08@
#include<bits/stdc++.h> using namespace std; int k,x,num,n1,n2,a1[30001],a2[30001],t[20001],w,sum; int main() { cin>>num; memset(a1,127/3,sizeof(a1)); memset(a2,127/3,sizeof(a2)); for(int i=1; i<=num; i++){ cin>>x; t[x]++; } for(int i=1; i<=20000; i++){ while(t[i]){ t[i]--; a1[++n1]=i; } } int i=1,j=1; k=1; while (k<num) { if(a1[i]<a2[j]){ w=a1[i]; i++; } else{ w=a2[j]; j++; } if(a1[i]<a2[j]){ w+=a1[i]; i++; } else{ w+=a2[j]; j++; } a2[++n2]=w; k++; sum+=w; } cout<<sum; return 0; }
-
22021-02-10 11:33:21@
#include<iostream>
#include<queue>
using namespace std;
priority_queue<int,vector<int>,greater<int> >q;
int main()
{
int n,ans=0; cin>>n;
for(int i=1;i<=n;i++)
{
int x;
cin>>x; q.push(x);
}
while(q.size()>=2)
{
int a=q.top(); q.pop();
int b=q.top(); q.pop();
ans+=a+b;
q.push(a+b);
}
cout<<ans<<endl;
return 0;
} -
02022-07-27 16:16:30@
这个咋和****这道题挺像的
-
02022-07-27 16:16:00@
这个咋和****这道题挺像的
- 1