1 条题解
-
0
C :
#include<stdio.h> #include<stdlib.h> int cmp(const void *a, const void*b) { return *(int *)a-*(int *)b; } void swap(int *x,int *y) { int t=*x;*x=*y;*y=t; } int main() { int n,i,j,s,ans=0,a[10005]; scanf("%d",&n); for(i=0;i<n; i++) scanf("%d",&a[i]); qsort(a,n,sizeof(a[0]),cmp); for(i=1;i<n;i++) { a[i]=a[i]+a[i-1]; ans+=a[i]; j=i; while((a[j]>a[j+1])&&(j<n-1)) { swap(&a[j],&a[j+1]); j++; } } printf("%d",ans); return 0; }C++ :
#include <iostream> #include <algorithm> using namespace std; const int N(30009); int w[N]={0}; void adjust(int i,int b) { int j=i*2; while(j<=b) { if(j<b&&w[j]>w[j+1]) j++; if(w[i]>w[j]) { swap(w[i],w[j]); i=j; j*=2; } else break; } } int main() { int n,ans(0); cin>>n; for(int i=1;i<=n;i++) cin>>w[i]; for(int i=n/2;i>=1;i--) adjust(i,n); for(int i=n;i>1;i--) { adjust(1,i); swap(w[1],w[i]); adjust(1,i-1); w[1]+=w[i]; ans+=w[1]; } cout<<ans<<endl; return 0; }Python :
# coding=utf-8 from queue import PriorityQueue q = PriorityQueue() n = int(input()) a = list(map(int, input().split())) for i in range(len(a)): q.put(a[i], a[i]) sum_num = 0 while q.qsize() > 1: a = q.get() b = q.get() q.put(a + b) sum_num += a + b print(sum_num)
- 1
信息
- ID
- 1439
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者