POJ 3253 Fence Repair:贪心及优先队列

Fence Repair

http://poj.org/problem?id=3253

Time Limit: 2000MS

Memory Limit: 65536K

Description

Farmer John wants to repair a small length of the fence around the pasture. He measures the fence and finds that he needs N (1 ≤ N ≤ 20,000) planks of wood, each having some integer length Li (1 ≤ Li ≤ 50,000) units. He then purchases a single long board just long enough to saw into the N 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 the N-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 the N 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 make N-1 cuts

Sample Input

3
8
5
8

Sample Output

34

Hint

He wants to cut a board of length 21 into pieces of lengths 8, 5, and 8.
The original board measures 8+5+8=21. The first cut will cost 21, and should be used to cut the board into pieces measuring 13 and 8. The second cut will cost 13, and should be used to cut the 13 into 8 and 5. This would cost 21+13=34. If the 21 was cut into 16 and 5 instead, the second cut would cost 16 for a total of 37 (which is more than 34).

Source

USACO 2006 November Gold

水过~

查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/sjjg/

完整代码:

/*32ms,480KB*/

#include <cstdio>
#include <queue>
using namespace std;
typedef long long ll;

priority_queue<ll, vector<ll>, greater<ll> > pq;///升序

int main(void)
{
    int N,len;
    ll ans;
    while (~scanf("%d", &N))
    {
        if(!pq.empty()) pq.pop();
        for (int i = 0; i < N; ++i)
            scanf("%d", &len), pq.push(len);
        ans = 0;
        while (pq.size() > 1)
        {
            ll a = pq.top();
            pq.pop();
            ll b = pq.top();
            pq.pop();
            ans += a + b;
            pq.push(a + b);
        }
        printf("%lld\n", ans);
    }
    return 0;
}

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索usaco java
, 贪心
, length
, to
, usaco
, and
, of
, The
, priority_queue
, priority_queue详解
, priority_queue实例
cut
poj3253、樱花油烟机3253g、outlook错误代码3253、outlook 3253、cz3253,以便于您获取更多的相关知识。

时间: 2024-12-22 02:54:38

POJ 3253 Fence Repair:贪心及优先队列的相关文章

poj 3253 Fence Repair【哈夫曼树、优先队列】

点击打开题目 Fence Repair Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 27599   Accepted: 8983 Description Farmer John wants to repair a small length of the fence around the pasture. He measures the fence and finds that he needs N (1 ≤ N ≤ 2

【OJ】贪心法 Fence Repair POJ 3253 霍夫曼(Huffman)编码原理 acmclub 12326

题目链接:点击打开链接 /* 贪心法 Fence Repair POJ 3253 霍夫曼(Huffman)编码原理 */ #include<iostream> #include<algorithm> typedef long long LL; using namespace std; int l[50010]; int main(){ int j,m=0,n;cin>>n; LL s=0,ans=0; for(int i=0;i<n;i++)cin>>

poj 1456 Supermarket:贪心, 并查集

链接: http://poj.org/problem?id=1456 题目: Description A supermarket has a set Prod of products on sale. It earns a profit px for each product x∈Prod sold by a deadline dx that is measured as an integral number of time units starting from the moment the

【POJ 3614 Sunscreen】贪心 优先级队列

题目链接:http://poj.org/problem?id=3614 题意:C头牛去晒太阳,每头牛有自己所限定的spf安全范围[min, max]:有L瓶防晒液,每瓶有自己的spf值和容量(能供几头牛用). 求这L瓶防晒液最多能让多少头牛安全地晒太阳. 思路:贪心策略,按spf从小到大或从大到小的顺序取出防晒液,供给尽可能多的剩余的牛. 具体如何判断当前这瓶防晒液最多能供给几头牛呢? 以spf从小到大排序所有防晒液为例,可以维护一个小顶堆,每取出一瓶防晒液l,就把剩余的所有min值低于l.sp

Fence Repair

#include <cstdio> #include <iostream> #include <algorithm> using namespace std; #define MAX_N 2000 typedef long long ll; int N,L[MAX_N]; void solve() { ll ans=0; while(N>1) { int mii1=0,mii2=1; if(L[mii1]>L[mii2]) swap(mii1,mii2);

POJ 3253

/* 有一个农夫要把一个木板钜成几块给定长度的小木板,每次锯都要收取一定费用,这个费用就是当前锯的这个木版的长度 给定各个要求的小木板的长度,及小木板的个数n,求最小费用 3 8 8 5为例: 长度为 21 的木板,截成13和8花费 21 再从长度为13的木板上锯下长度为5的木板,花费13 共21+13 =34 */ #include <iostream> #include <queue> #include <vector> using namespace std; i

数据结构专题

打星号的表示个人认为比较经典,或是算法比较好的题目   1195 Mobile phones 树状数组 1455 1521 Entropy huffman 1703 Find them, Catch them 并查集 1785 Binary Search Heap Construction 1794 Castle Walls 逆序对 1961 Period KMP重复因子 1984* Navigation Nightmare 并查集+坐标平移 1986* Distance Queries LCA

POJ题目分类

初期: 一.基本算法:      (1)枚举. (poj1753,poj2965)      (2)贪心(poj1328,poj2109,poj2586)      (3)递归和分治法.      (4)递推.      (5)构造法.(poj3295)      (6)模拟法.(poj1068,poj2632,poj1573,poj2993,poj2996) 二.图算法:      (1)图的深度优先遍历和广度优先遍历.      (2)最短路径算法(dijkstra,bellman-ford

poj 1659 Frogs&#039; Neighborhood

题目链接: http://poj.org/problem?id=1659 类型: 贪心,Havel-Hakimi定理 题目: Description 未名湖附近共有N个大小湖泊L1, L2, ..., Ln(其中包括未名湖),每个湖泊Li里住着一只青蛙Fi(1 ≤ i ≤ N).如果湖泊Li和Lj之间有水路相连,则青蛙Fi和Fj互称为邻居.现在已知每只青蛙的邻居数目x1, x2, ..., xn,请你给出每两个湖泊之间的相连关系. Input 第一行是测试数据的组数T(0 ≤ T ≤ 20).每