洛谷链接:https://www.luogu.com.cn/problem/P1334
首先想到每次砍最大的,然后剩下的不就少了。其实不然,因为不一定一次只能砍一个,可以砍两个或两个以上。这道题就是合并果子
import java.util.PriorityQueue;
import java.util.Scanner;
public class Main {
//小根堆
static PriorityQueue<Long> q=new PriorityQueue<Long>();
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
long n=in.nextInt();
long ans=0;
for(long i=0;i<n;i++) {
long a=in.nextInt();
q.offer(a);
}
for(long i=0;i<n-1;i++) {
long c=q.poll();
long d=q.poll();
ans+=c+d;
q.offer(c+d);
}
System.out.println(ans);
}
}