题目粗心
给定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;}