1 solutions

  • 1
    @ 2024-7-12 21:49:25
    /*  这道题的思路很简单
    	就是从小加到大		*/ 
    #include<bits/stdc++.h>
    using namespace std;
    int n;
    int a[10005]={};
    int ans=0;
    int fst=0,sec=1;
    //ans存答案
    //fst和sec存下标 
    int main(){
    	cin>>n;
    	for(int i=0;i<n;i++) cin>>a[i];
    	sort(a,a+n);
    	//先从小到大排个序 
    	for(int i=0;i<n-1;i++){
    		ans+=a[fst]+a[sec];
    		//将最小的两个加起来 
    		a[sec]+=a[fst];
    		//合并两个堆 
    		fst++,sec++;
    		//下标统一后移一位 
    		sort(a+fst,a+n);
    		//排个序接着来 
    	}
    	cout<<ans<<"\n";
    	return 0;
    }
    
    • 1

    [NOIP2004 提高组] 合并果子 / [USACO06NOV] Fence Repair G

    Information

    ID
    90
    Time
    800ms
    Memory
    125MiB
    Difficulty
    3
    Tags
    # Submissions
    75
    Accepted
    32
    Uploaded By