1 条题解

  • 0
    @ 2025-2-14 21:11:41

    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
    上传者