POJ3253 Fence Repair (贪心)
来源:互联网 发布:mac beta 升级正式版 编辑:程序博客网 时间:2024/06/18 07:07
题目链接http://poj.org/problem?id=3253
题目大意:FJ为了修理栅栏,要将一块很长的木板切成n块,切割前后木板的总长度不变,每次切割要花费的代价是切割以后两块木板的长度,求付出的最小花费代价。
思路:解题思想类似于哈夫曼树,让需要的最短的木板的节点深度最深。由题意可知,每次切割花费的代价是切割后两块木板的长度,所以要使得花费代价最少,只需使得需要的n块木板中最长的木板切割的次数最少,所以每次要选择当前木板中长度最小的两个。
AC代码如下:
#include <cstdio>#include <cstring>#include <algorithm>#define ll long longusing namespace std;const int maxn = 20005;int a[maxn],n; int main(){while(~scanf("%d",&n)){ll ans = 0, sum = 0,t;for(int i = 0; i < n; i ++){scanf("%d",&a[i]);}while(n > 1){int last = 1,first = 0;if(a[first] > a[last]) swap(first,last);for(int i = 2; i < n; i ++){if(a[i] < a[first])last = first,first = i;else if(a[i] < a[last])last = i;}ll t = a[first] + a[last];ans += t;if(first == n-1) swap(first,last);a[first] = t;a[last] = a[n-1];//每循环一次,n-1下标处的元素都会丢失 n --;}printf("%lld\n",ans);}return 0;}
阅读全文
0 0
- poj3253 Fence Repair( 贪心 )
- POJ3253 Fence Repair(贪心)
- poj3253 Fence Repair 贪心
- POJ3253-贪心-Fence Repair
- POJ3253 Fence Repair (贪心)
- POJ3253 Fence Repair 小顶堆+贪心
- POJ3253-Fence Repair-贪心-哈夫曼树
- 贪心算法 POJ3253 Fence Repair
- POJ3253 Fence Repair 贪心法 哈夫曼树
- 【POJ3253】Fence Repair(优先队列+贪心)
- poj3253 Fence Repair 贪心/优先队列
- POJ3253 Fence Repair(贪心,哈夫曼树)
- POJ3253 Fence Repair
- poj3253 Fence Repair
- poj3253 Fence Repair
- poj3253 Fence Repair---赫夫曼树
- poj3253 Fence Repair
- POJ3253 Fence Repair
- 正则表达式我又来了,它确实是博大精深,让人着迷
- 百练_2758:菲波那契数列(2)
- javamail 发送邮件
- 关于cmd运行自动进行远程连接(自动填写用户及密码)
- linux后台启动spring boot程序
- POJ3253 Fence Repair (贪心)
- HDU 5416 CRB and Tree 异或前缀和
- ajax跨域请求,支持js的ajax跨域请求,只需要设置后台代码的返回头允许跨域
- echo与@echo区别
- JAVA-JDBC完成CRUD的操作进阶
- iOS 彻底删除使用cocoapods导入项目的第三方
- weak和assign的区别-正确使用weak、assign
- 搜索算法二分查找法(折半查找法)
- Getting Difference