CF-1111B-Average Superhero Gang Power

Posted angel-demon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CF-1111B-Average Superhero Gang Power相关的知识,希望对你有一定的参考价值。

首先,对于这题我们要知道要删除一个数使平均值最大一定是删除最小的数,然后我们假设删除操作执行了i次,也就是删除最小的i个数。在已知删除操作次数之后求增加操作的次数就容易了,当然是m - i和k * (n - i)中比较小的数啦。用一个ans变量记录结果,遍历i,更新ans,得到最终的ans。

B - Average Superhero Gang Power GNU C++11 Accepted 46 ms 400 KB
#include "bits/stdc++.h"
using namespace std;
typedef long long LL;
const int MAXN = 1e5 + 5;
int arr[MAXN];
double ans;
int main() {
    int n, k, m;
    scanf("%d%d%d", &n, &k, &m);
    LL sum = 0;
    for (int i = 1; i <= n; i++) {
        scanf("%d", &arr[i]);
        sum += arr[i];
    }
    sort(arr + 1, arr + 1 + n);
    for (int i = 0; i < n && i <= m; i++) {
        sum -= arr[i];
        // min和max函数要求两个参数数据类型相同,k * (n - i)可能爆int,所以两边都转成LL; 
        ans = max(ans, (sum + min(1LL * m - i, 1LL * k * (n - i))) * 1.0 / (n - i));
    }
    printf("%.8lf", ans);
    return 0;
}

 

以上是关于CF-1111B-Average Superhero Gang Power的主要内容,如果未能解决你的问题,请参考以下文章

[CF1111E]Tree

CF1111C Creative Snap

[CF1111D] Destory the Colony

[CF1111E] Tree

[CF1111C]Creative Snap

CF1111E Tree