1

题目大意

给定N段绳子,将这N段绳子依次对折,任意两段对折后绳子的长度为和的一半,要求给出对折这N段绳子后最长的长度。

算法思路

因为对折后的绳子在之后又会继续对折,所以尽可能将长的绳子对折次数减少才能获得最长的绳子,所以将所有的绳子进行升序排序,然后依次对折就是最后的答案。

提交结果

图片.png

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

乔梓鑫
569 声望17 粉丝

主要分享个人学习经验和心得