2 条题解

  • 3
    @ 2021-8-7 20:58:02

    C++ :

    #include <iostream>
    using namespace std;
    int n;
    int a[10005];
    long long sum;
    int ffind(){
    	long long min = 20000000000;
    	long long min2 = 20000000000;
    	int pos;
    	int pos2;
    	for(int i=0;i<n;i++){
    		if(a[i]<min){
    			min = a[i];
    			pos = i;
    		}
    		
    	}
    	a[pos] = 9999999999;
    	for(int i=0;i<n;i++){
    		if(a[i]<min2){
    			min2 = a[i];
    			pos2 = i;
    		}
    		
    	}
    	a[pos2] = min+min2;
    	return min+min2;
    }
    int main(){
    
    	cin>>n;
    	for(int i=0;i<n;i++)
    		cin>>a[i];
    	for(int i=0;i<n-1;i++){
    		sum += ffind();
    	}
    	cout<<sum<<endl;
    	return 0;
    }
    
    • -1
      @ 2021-11-7 22:06:37
      #include<iostream>
      #include<cstdio>
      #include<cmath>
      #include<cstdlib>
      #include<cstring>
      #include<algorithm>
      #include<queue>
      #include<vector>
      using namespace std;
      priority_queue <int,vector<int>,greater<int> > q;
      int main(){
          int n;
          cin>>n;
          for(int i=1;i<=n;i++){
              int x;
              cin>>x;
              q.push(x);
          }
          long long ans=0;
          while(--n){
              int t = 0;
              t += q.top();
              q.pop();
              t += q.top();
              q.pop();
              ans += t;
              q.push(t);
          }
          cout<<ans;
          return 0;
      }
      
      • 1

      信息

      ID
      59
      时间
      1000ms
      内存
      256MiB
      难度
      10
      标签
      递交数
      201
      已通过
      5
      上传者