1 solutions
-
1
/* 这道题的思路很简单 就是从小加到大 */ #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
Information
- ID
- 90
- Time
- 800ms
- Memory
- 125MiB
- Difficulty
- 3
- Tags
- # Submissions
- 75
- Accepted
- 32
- Uploaded By