一开始没读懂,其实就是哈夫曼树求最长,从最短开始合并就ok。
#include<bits/stdc++.h>
using namespace std;
vector<int> v;
int main() {
int n, ans;
scanf ("%d", &n);
v.resize(n);
for (int i = 0; i < n; i++) {
scanf ("%d", &v[i]);
}
sort(v.begin(), v.end());
for (int i = 0; i < v.size(); i++) {
if (i == 0) {
ans = v[i];
continue;
}
ans = (ans + v[i]) / 2;
}
cout << ans;
}
这篇博客介绍了如何运用哈夫曼树解决寻找数组中最长不降子序列的平均值问题。代码实现中,首先对输入的整数数组进行排序,然后通过遍历并结合相邻元素的平均值,找出最长不降子序列的平均值。
309

被折叠的 条评论
为什么被折叠?



