日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

1724: [Usaco2006 Nov]Fence Repair 切割木板( 贪心 )

發布時間:2024/6/18 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 1724: [Usaco2006 Nov]Fence Repair 切割木板( 贪心 ) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

倒過來看 , 每次總是選擇最短的兩塊木板合并 , 用heap維護

------------------------------------------------------------------------------

#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#include<queue>#define rep( i , n ) for( int i = 0 ; ?i < n ; ++i )#define clr( x , c ) memset( x , c , sizeof( x ) )using namespace std;const int maxn = 20000 + 5;priority_queue< int , vector< int > , greater< int > > Q;int main() {freopen( "test.in" , "r" , stdin );int n;cin >> n;rep( i , n ) {int t;scanf( "%d" , &t );Q.push( t );}long long ans = 0;for( ; ; ) {int x , y;if( Q.empty() )? ? ?break;else? ? ?x = Q.top() , Q.pop();if( Q.empty() )? ? ?break;else? ? ?y = Q.top() , Q.pop();Q.push( x + y );ans += x + y;?}cout << ans << "\n";return 0;}

?

------------------------------------------------------------------------------

1724: [Usaco2006 Nov]Fence Repair 切割木板

Time Limit:?5 Sec??Memory Limit:?64 MB
Submit:?875??Solved:?436
[Submit][Status][Discuss]

Description

Farmer John想修理牧場柵欄的某些小段。為此,他需要N(1<=N<=20,000)塊特定長度的木板,第i塊木板的長度為Li(1<=Li<=50,000)。然后,FJ去買了一塊很長的木板,它的長度正好等于所有需要的木板的長度和。接下來的工作,當然是把它鋸成需要的長度。FJ忽略所有切割時的損失——你也應當忽略它。 FJ郁悶地發現,他并沒有鋸子來把這塊長木板鋸開。于是他把這塊長木板帶到了Farmer Don的農場,想向FD借用鋸子。 作為一個有商業頭腦的資本家,Farmer Don沒有把鋸子借給FJ,而是決定幫FJ鋸好所有木板,當然FJ得為此付出一筆錢。鋸開一塊木板的費用,正比于木板的長度。如果這塊木板的長度是21,那么鋸開它的花費便是21美分。 談妥條件后,FD讓FJ決定切割木板的順序,以及每次切割的位置。請你幫FJ寫一個程序,計算為了鋸出他想要的木板,他最少要花多少錢。很顯然,按不同的切割順序來切開木板,FJ的總花費可能不同,因為不同的切割順序,會產生不同的中間結果。

Input

* 第1行: 一個正整數N,表示FJ需要木板的總數

* 第2..N+1行: 每行包含一個整數,為FJ需要的某塊木板的長度

Output

* 第1行: 輸出一個整數,即FJ完成對木板的N-1次切割的最小花費

Sample Input

3
8
5
8


FJ打算把一塊長為21的木板切成長度分別為8,5,8的三段。

Sample Output

34
輸出說明:

起初,木板的長度為21。第一次切割木板花費21美分,把木板切成長分別為13和8的兩塊。然后花費1
3美分把長為13的木板切成長為8和5的兩塊。這樣的總花費是21+13=34美分。如果第一次把木板切成長
為16和5的兩塊,那么第二次切木板的花費就是16美分,這樣的總花費就是37美分,比剛才花費34美分的方案來的差。

HINT

Source

Gold

?

轉載于:https://www.cnblogs.com/JSZX11556/p/4556846.html

總結

以上是生活随笔為你收集整理的1724: [Usaco2006 Nov]Fence Repair 切割木板( 贪心 )的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。