zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    C# 设计模式
    FutureTask、Fork/Join、 BlockingQueue
    线程的几种创建方式
    行锁、表锁、乐观锁、悲观锁
    J.U.C之AQS
    同步容器并发容器
    线程不安全类
    线程封闭
    不可变对象
    安全发布对象—单例模式
  • 原文地址:https://www.cnblogs.com/Angel-Demon/p/10353999.html
Copyright © 2011-2022 走看看