C++ PAT乙 1070. 结绳(25)
emmm其他题讲起来很麻烦,但是这题很简单,我就说一下。
这题目的是求所结绳子的最大长度,但是每次结绳会对折,也就是长度减半。这样的话短绳子损失的长度少,还有一个前提是结成一根绳子对折次数是一定的,所以只要尽量对折短绳子,减少长绳子对折次数就好了。
代码如下:
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int N;
cin >> N;
double len[N];
for(int i = 0;i < N;i++) cin >> len[i];
sort(len,len+N);
double ans = len[0];
for(int i = 1;i < N;i++){
ans/=2;
ans+=len[i]/2;
}
cout<<(int)ans<<endl;
return 0;
}