集合操作(C) 题解 先将 数组排序,可以考虑二分。二分什么呢?答曰:二分答案。 当然,不是集合中的每个元素都要二分答案,我们只二分原来还没有开始操作时最大的元素()最后的大小。 我们假设 最后的大小排名第 ,不妨假设原 的元素最后的排名分布在 ,且尽可能小。 容易证明,当 最后的大小越小,需要操作的次数越多。 函数就很好写了 bool check (LL x) { LL temp = a[n] - x * p;//最后a[n]的大小 LL sum = 0;//统计需要操作多少次 for (int i = 1; i <= n; i++) { ...