题目大意
给定N段绳子,将这N段绳子依次对折,任意两段对折后绳子的长度为和的一半,要求给出对折这N段绳子后最长的长度。
算法思路
因为对折后的绳子在之后又会继续对折,所以尽可能将长的绳子对折次数减少才能获得最长的绳子,所以将所有的绳子进行升序排序,然后依次对折就是最后的答案。
提交结果
AC代码
#include <cstdio>
#include <algorithm>
using namespace std;
int main() {
int n;
scanf("%d",&n);
int a[n];
for(int i=0;i<n;++i){
scanf("%d",&a[i]);
}
sort(a,a+n);
int b = a[0];
for(int i=1;i<n;++i){
b = (b+a[i])/2;
}
printf("%d",b);
return 0;
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。