POJ 3253 Fence Repair(优先队列)
2015-07-13 09:29
274 查看
Description
有一块长木板,要经过n-1次切割将其切成n块农夫想要的木板,对于每块木板,没切割一次,将会消耗和这条木板长度值相等的金钱,问最少需要多少钱,可将木板切成自己想要的n块
Input
第一行为一个整数n表示农夫想要的木板数,之后n行每行一个整数表示需要的木板长
Output
输出最少花钱数
Sample Input
3
8
5
8
Sample Output
34
Solution
优先队列
Code
有一块长木板,要经过n-1次切割将其切成n块农夫想要的木板,对于每块木板,没切割一次,将会消耗和这条木板长度值相等的金钱,问最少需要多少钱,可将木板切成自己想要的n块
Input
第一行为一个整数n表示农夫想要的木板数,之后n行每行一个整数表示需要的木板长
Output
输出最少花钱数
Sample Input
3
8
5
8
Sample Output
34
Solution
优先队列
Code
#include<cstdio> #include<iostream> #include<queue> #include<vector> using namespace std; typedef long long ll; struct cmp { bool operator()(const ll x,const ll y) { return x>y; } }; int main() { priority_queue<ll,vector<ll>,cmp> que; int n; ll num; scanf("%d",&n); for(int i=0;i<n;i++) { scanf("%lld",&num); que.push(num);//将需要的木板长度入队 } ll ans=0; while(que.size()>1)//当队列中小于等于一个元素时跳出 { ll a=que.top();//得到队首元素的值,并使其出队 que.pop(); ll b=que.top();//两次取队首,即得到最小的两个值 que.pop(); que.push(a+b);//入队 ans+=(a+b); } printf("%lld\n",ans); return 0; }
相关文章推荐
- jQuery实现自定义checkbox和radio样式
- 简单CSS3动画
- jQuery动态添加的元素绑定事件处理函数代码
- 11个很棒的 jQuery 图表库
- jquery的ajax的使用!
- JS获取select的option的值
- 细说JavaScript数据类型及转换
- 使用jquery-qrcode生成二维码
- JavaScript 实现Map效果
- javascript作用域问题实例分析
- 深入理解CSS3 Animation 帧动画
- HTML5游戏实战:计时拼图游戏制作
- javascript清理table样式
- [INS-40901] The cluster node information table is unfilled 解决方案
- 15个实用的CSS在线实例教程
- hdu 1829 A Bug's Life 并查集
- Chang My Life style
- node.js(一)
- 08、通过自定义依赖属性,用 StateTrigger 修改全局主题样式
- HTML data属性