演算法學習之路|結繩
給定一段一段的繩子,你需要把它們串成一條繩。每次串連的時候,是把兩段繩子對摺,再如下圖所示套接在一起。這樣得到的繩子又被當成是另一段繩子,可以再次對摺去跟另一段繩子串連。每次串連後,原來兩段繩子的長度就會減半。
給定N段繩子的長度,你需要找出它們能串成的繩子的最大長度。
輸入格式:
每個輸入包含1個測試用例。每個測試用例第1行給出正整數N (2 <= N <= 104);第2行給出N個正整數,即原始繩段的長度,數字間以空格分隔。所有整數都不超過104。
輸出格式:
在一行中輸出能夠串成的繩子的最大長度。結果向下取整,即取為不超過最大長度的最近整數。
輸入樣例:
8
10 15 12 3 4 13 1 15
輸出樣例:
14
我的思路:
利用multiset優先選取較大的對摺,再小的。
直到對摺結束為止。
推薦使用動態規劃的方法,更精確。
以下屬於第一種方法(最後幾個沒AC):
#include<cstdio>
#include<set>
#include<iostream>
using namespace std;
int main(){
int n;
cin>>n;
multiset<double> v;
double tmp;
for(int i=0;i<n;i++){
cin>>tmp;
v.insert(tmp);
}
double a,b;
while(v.size()!=1){
a=*v.begin();
v.erase(v.begin());
b=*(v.begin());
v.erase(v.begin());
v.insert((a+b)/2);
}
printf("%.0f",*v.begin());
}
相關文章
- Linux爬坑之路(學習總結)Linux
- 強化學習之路一 QLearning 演算法強化學習演算法
- golang 學習之路之 struct 結構體GolangStruct結構體
- 小白機器學習基礎演算法學習必經之路(下)機器學習演算法
- SOM演算法學習總結演算法
- eggjs學習之路JS
- java學習之路Java
- Pytest學習之路
- 機器學習&深度學習之路機器學習深度學習
- PAT-B 1070 結繩【貪心】
- 深度學習優化演算法總結深度學習優化演算法
- 付費學習之路
- 產品學習之路
- vue-學習之路Vue
- 信安學習之路
- web前端學習之路Web前端
- linux學習之路(1)Linux
- 凡人學習Linux之路Linux
- Python 學習之路(下)Python
- go學習之路 --- 起步Go
- 第三節化學纖維繩
- FPGA 學習之路:verilog學習第5天FPGA
- 線性迴歸演算法學習總結演算法
- 經典機器學習演算法總結機器學習演算法
- 學習資料結構與演算法心得資料結構演算法
- 資料結構與演算法學習總結--遞迴資料結構演算法遞迴
- 資料結構與演算法學習-連結串列下資料結構演算法
- 資料結構與演算法學習-連結串列上資料結構演算法
- golang學習之路 之mapGolang
- 人工智慧學習之路人工智慧
- Android開發學習之路Android
- javaweb學習之路(3)CookieJavaWebCookie
- javaweb學習之路(1)requestJavaWeb
- 學習之路 / handle請求
- Java學習之路 -- Java怎麼學?Java
- 資料結構與演算法學習-陣列資料結構演算法陣列
- 學習JavaScript資料結構與演算法 (一)JavaScript資料結構演算法
- 資料結構與演算法學習-開篇資料結構演算法
- 資料結構學習筆記-佛洛依德演算法資料結構筆記演算法