1070 结绳 (25 分)
分析:题目中让求最大长度。就是找最优解,那么我们采取贪心策略,试想如果把最长的绳子当作第一根绳子,那么接到最后,它就对折了好多次。但是如果把最长的绳子当作最后一根绳子,那么它就只需要对这一次。这样损失可能就会小一点。所以我们可以把接收到的数据从小到大排序之后,再依次对折连接。代码如下:
#include<algorithm>
using namespace std;
int a[10001];
int main()
{
int n,s;
cin>>n;
for(int i=0;i<n;i++)
cin>>a[i];
sort(a,a+n);
s=a[0];
for(int i=1;i<n;i++)
s=(s+a[i])/2;
cout<<s;
}