1 条题解
-
0
C++ :
#include<iostream> #include<cstdlib> #include<queue> #include<cstdio> using namespace std; priority_queue<int> que; int main() { int n; scanf("%d",&n); for(int i=1,x;i<=n;++i) { scanf("%d",&x); que.push(-x); } int liehuo=0; for(int i=1,temp;i<n;++i) { temp=que.top(); liehuo-=que.top(); que.pop(); temp+=que.top(); liehuo-=que.top(); que.pop(); que.push(temp); } cout<<liehuo; //system("pause"); return 0; }
Pascal :
var a:Array[0..10000]of longint;n,x,s,i,p,j:longint; procedure kp(l,r:int64); var i,j,mid,t:int64; begin i:=l;j:=r; mid:=a[(i+j) div 2]; repeat while(a[i]<mid)do inc(i); while(a[j]>mid)do dec(j); if i<=j then begin t:=a[i];a[i]:=a[j];a[j]:=t; inc(i);dec(j); end; until i>j; if l<j then kp(l,j); if i<r then kp(i,r); end; begin readln(n); for i:=1 to n do read(a[i]); kp(1,n); x:=0; i:=1; repeat inc(i); a[i]:=a[i-1]+a[i]; s:=a[i]; p:=n; for j:=i+1 to n do if s>a[j] then a[j-1]:=a[j] else begin p:=j-1;break;end; a[p]:=s; x:=x+s; until i=n; writeln(x); end.
Java :
import java.util.ArrayList; import java.util.Collections; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int n=sc.nextInt(); int[] count=new int[n]; ArrayList<Integer> list = new ArrayList<Integer>(); Integer sum=0; for (int i = 0; i < n; i++) { count[i]=sc.nextInt(); list.add(count[i]); } int temp=0; while(list.size()>1) { int i=0; temp=0; Collections.sort(list); temp+=list.get(i)+list.get(i+1); list.remove(i+1); list.set(i, temp); sum+=temp; } System.out.println(sum); } }
- 1
信息
- ID
- 709
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者