PAT-B 1070 結繩【貪心】
PAT-B 1070 結繩
https://pintia.cn/problem-sets/994805260223102976/problems/994805264706813952
題目
給定一段一段的繩子,你需要把它們串成一條繩。每次串連的時候,是把兩段繩子對摺,再如下圖所示套接在一起。這樣得到的繩子又被當成是另一段繩子,可以再次對摺去跟另一段繩子串連。每次串連後,原來兩段繩子的長度就會減半。
給定 N 段繩子的長度,你需要找出它們能串成的繩子的最大長度。
輸入
每個輸入包含 1 個測試用例。每個測試用例第 1 行給出正整數 N (2≤N≤104);第 2 行給出 N 個正整數,即原始繩段的長度,數字間以空格分隔。所有整數都不超過10^4。
輸出
在一行中輸出能夠串成的繩子的最大長度。結果向下取整,即取為不超過最大長度的最近整數。
樣例輸入
8
10 15 12 3 4 13 1 15
樣例輸出
14
分析
貪心法,貪心策略為優先讓值最小的兩根繩進行合併,程式中使用了優先佇列。
C++程式
#include<iostream>
#include<queue>
using namespace std;
int main()
{
priority_queue<double,vector<double>,greater<double> >q;//優先佇列,值小優先
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
double len;
scanf("%lf",&len);
q.push(len);//壓入優先佇列
}
while(q.size()>1)
{
double f1=q.top();//最小者
q.pop();
double f2=q.top();//次小者
q.pop();
q.push((f1/2+f2/2));//將f1和f2形成的新繩的長度壓入優先佇列
}
double ans=q.top();
printf("%d\n",(int)ans);
return 0;
}
相關文章
- 7.5 - 貪心篇完結
- Codeforces 1070C - Cloud Computing 思路+線段樹+貪心 (2018-2019 ICPC, NEERC)Cloud
- 貪心
- 反悔貪心
- Supermarket(貪心)
- PAT-B 1020 月餅【貪心法】
- 貪心例題
- 貪心+搜尋
- codeforces 1428E. Carrots for Rabbits(貪心(非常優秀的貪心題),結構體過載運算子)結構體
- python 實現 割繩子問題(劍指offer 14題) 動態規劃 或者貪心演算法Python動態規劃演算法
- 反悔貪心雜題
- 貪心演算法演算法
- 貪心、構造合集
- HDU 5821 Ball(貪心)
- 貪心模式記錄模式
- 「貪心」做題記錄
- [反悔貪心] Add One 2
- 貪心 做題筆記筆記
- 貪心演算法Dijkstra演算法
- 24/03/20 貪心(一)
- HDU 6047 Maximum Sequence (貪心)
- HDU 5813 Elegant Construction (貪心)Struct
- 漲薪【貪心】【快速冪】
- Leetcode 貪心:差值調整LeetCode
- Least Cost Bracket Sequence(貪心)ASTRacket
- 刪數問題(貪心)
- 牛客 tokitsukaze and Soldier 貪心
- 貪心-刪數問題
- 貪心-*活動選擇
- 資料結構與演算法——貪心演算法資料結構演算法
- 學一下貪心演算法-學一下貪心演算法演算法
- 貪心演算法(貪婪演算法,greedy algorithm)演算法Go
- 9-貪心演算法演算法
- 【貪心】POJ 3617:Best Cow Line
- Moving Tables(貪心演算法)演算法
- hdu--4435--charge-station+貪心
- 淺談貪心與動歸
- 牛客 切長條(貪心)