题目链接https://pintia.cn/problem-sets/994805342720868352/problems/994805350316752896
题目大意:给出一串绳子的长度,两根绳子在长度都缩短一半后可以连结在一起,编变成一根新绳子。求可能连起的绳子的最长长度。
思路:越早连结起来绳子被折叠的次数越多,那么让最短的绳子被折最多次,最长的绳子被折最多次就行了。排序算一算就行。
#include <iostream>
#include <cstdio>
#include <cmath>
#include <vector>
#include <algorithm>
#include <queue>
#include <map>
#include <set>using namespace std;vector<int> arr;int main() {
int N;scanf("%d", &N);arr.resize(N);for (int i = 0; i < N; i++)scanf("%d", &arr[i]);sort(arr.begin(), arr.end());int sum = (arr[0] + arr[1]) / 2;for (int i = 2; i < N; i++)sum = (sum + arr[i]) / 2;printf("%d", sum);return 0;
}