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;
}

原文地址:https://www.cnblogs.com/long98/p/10352267.html