国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

sdutacm-Fence Repair

2019-11-06 06:21:23
字體:
來源:轉載
供稿:網友

FenceRepair

TimeLimit: 2000MS Memory Limit: 65536KB

SubmitStatistic

PRoblem Description

Farmer John wants to repair a small length of the fencearound the pasture. He measures the fence and finds that he needs N (1≤ N ≤ 20,000) planks of wood, each having some integerlength Li (1 ≤ Li ≤ 50,000)units. He then purchases a single long board just long enough to saw intothe N planks (i.e., whose length is the sum of thelengths Li). FJ is ignoring the "kerf", theextra 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 whichto cut the wood, so he mosies over to Farmer Don/'s Farm with this long boardand politely asks if he may borrow a saw.

Farmer Don, a closet capitalist, doesn/'t lend FJ a sawbut instead offers to charge Farmer John for each of the N-1 cutsin 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 andlocations to cut the plank. Help Farmer John determine the minimum amount ofmoney he can spend to create the N planks. FJ knows that hecan cut the board in various different orders which will result in differentcharges 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-1cuts

Example Input

3

8

5

8

Example Output

34

Hint

 

Author

#include <iostream>#include<string.h>#include<stdio.h>#include<queue>#include<stdlib.h>#include<algorithm>using namespace std;long long sum;int h[10002];int main(){    priority_queue<int,vector<int>,greater<int> >q;    int n,i,a,b,c;    scanf("%d",&n);    for(i=0;i<n;i++)    {        scanf("%d",&h[i]);        q.push(h[i]);    }    sum = 0;    while(!q.empty())    {        a = q.top();        q.pop();        if(!q.empty())        {           b = q.top();           q.pop();           c = a+b;           q.push(c);           sum += c;        }    }    printf("%lld/n",sum);    return 0;}/*題目大意:FJ需要修補牧場的圍欄,他需要 N 塊長度為 Li 的木頭(N planks of woods)。開始時,FJ只有一塊無限長的木板,因此他需要把無限長的木板鋸成 N 塊長度為 Li 的木板,Farmer Don提供FJ鋸子,但必須要收費的,收費的標準是對應每次據出木塊的長度,比如說測試數據中 5 8 8,一開始,FJ需要在無限長的木板上鋸下長度 21 的木板(5+8+8=21),第二次鋸下長度為 5 的木板,第三次鋸下長度為 8 的木板,至此就可以將長度分別為 5 8 8 的木板找出題目可以轉化為Huffman樹構造問題 :給定 N planks of woods,1.   在 N planks 中每次找出兩塊長度最短的木板,然后把它們合并,加入到集合A中,2.  在集合中找出兩塊長度最短的木板,合并加入到集合A中,重復過程,直到集合A中只剩下一個元素顯然,通過每次選取兩塊長度最短的木板,合并,最終必定可以合并出長度為 Sum(Li)的木板,并且可以保證總的耗費最少*//***************************************************User name: jk160505徐紅博Result: AcceptedTake time: 12msTake Memory: 428KBSubmit time: 2017-02-09 09:41:23****************************************************/

 


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 深州市| 翁牛特旗| 白山市| 延安市| 南开区| 凯里市| 霍邱县| 得荣县| 满洲里市| 中西区| 安图县| 鹤山市| 玉门市| 嵩明县| 嘉鱼县| 靖安县| 新余市| 深泽县| 涿州市| 陇川县| 新泰市| 遂宁市| 茌平县| 永昌县| 阳江市| 松原市| 西吉县| 黎川县| 拉萨市| 嘉鱼县| 荣成市| 东辽县| 连云港市| 蓝山县| 舞钢市| 弋阳县| 湖北省| 五寨县| 隆安县| 广汉市| 阜城县|