| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
贴Java代码。 O(n*log n) ,带注释import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
// 创建优先队列,不会用的自行看手册
PriorityQueue<Long> pq = new PriorityQueue<Long>();
// 输入数据
int N = s.nextInt();
for(int i = 0; i < N; i++)
pq.add(s.nextLong());
// 首先把最小的两段木头拼在一起后算在cost里,这就是最后一刀的最优解。
// 然后把拼接后的木段放入优先队列中,重复第一步
// 直到优先队列中只剩下最后一个数字。
long cost = 0;
while(N > 1){
long c = pq.poll() + pq.poll();
cost += c;
pq.add(c);
N--;
}
System.out.println(cost);
}
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator