poj-3253-sdutoj-2127-哈夫曼树-优先队列
2015-08-11 18:39
267 查看
Description
Farmer John wants to repair a small length of the fence around the pasture. He measures the fence and finds that he needsN (1 ≤
N ≤ 20,000) planks of wood, each having some integer lengthLi (1 ≤
Li ≤ 50,000) units. He then purchases a single long board just long enough to saw into theN planks (i.e., whose length is the sum of the lengths
Li). FJ is ignoring the "kerf", the extra length lost to sawdust when a sawcut is made; you should ignore it, too.
FJ sadly realizes that he doesn't own a saw with which to cut the wood, so he mosies over to Farmer Don's Farm with this long board and politely asks if he may borrow a saw.
Farmer Don, a closet capitalist, doesn't lend FJ a saw but instead offers to charge Farmer John for each of theN-1 cuts in the plank. The charge to cut a piece of wood is exactly equal to its length. Cutting a plank of length 21 costs 21 cents.
Farmer Don then lets Farmer John decide the order and locations to cut the plank. Help Farmer John determine the minimum amount of money he can spend to create theN planks. FJ knows that he can cut the board in various different orders which will
result in different charges since the resulting intermediate planks are of different lengths.
Input
Line 1: One integer N, the number of planks
Lines 2..N+1: Each line contains a single integer describing the length of a needed plank
Output
Line 1: One integer: the minimum amount of money he must spend to makeN-1 cuts
Sample Input
Sample Output
第一道优先队列,记录一下啊
Farmer John wants to repair a small length of the fence around the pasture. He measures the fence and finds that he needsN (1 ≤
N ≤ 20,000) planks of wood, each having some integer lengthLi (1 ≤
Li ≤ 50,000) units. He then purchases a single long board just long enough to saw into theN planks (i.e., whose length is the sum of the lengths
Li). FJ is ignoring the "kerf", the extra length lost to sawdust when a sawcut is made; you should ignore it, too.
FJ sadly realizes that he doesn't own a saw with which to cut the wood, so he mosies over to Farmer Don's Farm with this long board and politely asks if he may borrow a saw.
Farmer Don, a closet capitalist, doesn't lend FJ a saw but instead offers to charge Farmer John for each of theN-1 cuts in the plank. The charge to cut a piece of wood is exactly equal to its length. Cutting a plank of length 21 costs 21 cents.
Farmer Don then lets Farmer John decide the order and locations to cut the plank. Help Farmer John determine the minimum amount of money he can spend to create theN planks. FJ knows that he can cut the board in various different orders which will
result in different charges since the resulting intermediate planks are of different lengths.
Input
Line 1: One integer N, the number of planks
Lines 2..N+1: Each line contains a single integer describing the length of a needed plank
Output
Line 1: One integer: the minimum amount of money he must spend to makeN-1 cuts
Sample Input
3 8 5 8
Sample Output
34
第一道优先队列,记录一下啊
#include<iostream> #include<stdlib.h> #include<stdio.h> #include<string.h> #include<queue> using namespace std; int main() { priority_queue<int,vector<int>,greater<int> > que; int n; long long sum = 0; while(~scanf("%d",&n)) { sum = 0; int x; while(n--) { scanf("%d",&x); que.push(x); } while(que.size()>1) { int x = que.top(); que.pop(); int y = que.top(); que.pop(); sum= sum+x+y; que.push(x+y); } if(sum==0) { printf("%d\n",x); } else printf("%lld\n",sum); } return 0; }
相关文章推荐
- Thinkphp 分页应用
- Gulp入门教程
- 反射机制
- protobuf使用方法
- protobuf使用方法
- Navicat Premium查询CoreData、SQLit数据库操作
- jquery中attr()方法的使用
- 使用JSONObject来生成JSON和解析JSON
- mysql中如何复制一行数据
- Keepalived+mysql实现高可用
- mongodb 命令零散记录
- 写了一个初中同学——为了有效地完成现有的知识积累
- Spring中的p标签
- 智渔课堂官方免费教程二十一:Java常用类之包装类 自动装箱 自动拆箱
- JavaScript-html标题滚动效果
- 解析数据错误
- 《知识不是力量》读书笔记
- I学霸官方免费教程二十一:Java常用类之包装类 自动装箱 自动拆箱
- Android 调试之 Log和LogCat的详解
- Struct和Class的不同