当前位置: 首页 > news >正文

C. Robin Hood in Town思考与理解

文章目录

C. Robin Hood in Town

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 首先就是得思考一个问题:如何快速找到有多少个数严格小于平均数的一半?答案是显而易见的,二分,所以我们需要进行升序排序
  • 考虑题目给出的特殊情况当n=1或n=2的时候,直接输出-1即可
  • 那么对于可以通过增加x来判断满足最小的x的问题,这里就转换为,如何快速增加x,然后逐一判断这个x所带来的影响?
    • 直接暴力的做法肯定是x从0开始,逐个+1显而易见,这样十分慢
    • 正确的做法是直接使用二分,这里就要考虑这个二分的范围了,最小肯定是0,那么最大是多少?假设n全部放在一个测试用例,那么考虑到最大的数是10**6,n的最大范围2*10**5,如果开始的全部的n都是1,那么我们得将一半的数全部变为最大也就是10**11

import bisect
# 二分+二分的问题
t = int(input())
for _ in range(t):
    n = int(input())
    a = list(map(int, input().split()))
    if n == 1 or n == 2:
        print(-1)
        continue
    a.sort()
    asum = sum(a)
    # aver = asum / n
    # index = bisect.bisect_left(a, aver/2)
    # if index > n // 2:
    #     print(0)
    #     continue
    # 接下来怎么办?
    # 增加数的问题,具有二分的性质
    # 考虑增加的数量为mid
    def check(mid):
        a[-1] += mid
        tmpsum = asum + mid
        aver = tmpsum / n
        index1 = bisect.bisect_left(a, aver/2)
        a[-1] -= mid
        return index1 > n // 2
    l,r = 0,10**12
    res = float('inf')
    while l<=r:
        mid = (l+r)//2
        if check(mid):
            res = min(res,mid)
            r = mid - 1
        else:
            l = mid + 1
    print(res)

http://www.dtcms.com/a/129812.html

相关文章:

  • 变化检测论文学习写作——摘要
  • LeetCode.225. 用队列实现栈
  • 计算机视觉算法实现——电梯禁止电瓶车进入检测:原理、实现与行业应用(主页有源码)
  • vue 入门:组件通讯
  • Python在糖尿病分类问题上寻找具有最佳 ROC AUC 分数和 PR AUC 分数(决策树、逻辑回归、KNN、SVM)
  • C++STL——容器-list(含模拟实现,即底层原理)(含迭代器失效问题)(所有你不理解的问题,这里都有解答,最详细)
  • python:audioFlux 使用教程
  • 【maxENT】最大熵模型(Maximum Entropy Model)R语言实现
  • 双系统win11 + ubuntu,如何完全卸载ubuntu系统?
  • Flutter中如何判断一个计算任务是否耗时?
  • 封装Tcp Socket
  • Pinocchio中data、model接口介绍
  • Echarts跨平台设备适配详解
  • ssh 三级跳
  • C语言中数组与指针:差异、应用及深度剖析
  • 【unity游戏开发入门到精通——UGUI】CanvasScaler画布缩放器组件
  • 探索 Go 与 Python:性能、适用场景与开发效率对比
  • MySQL中的UNION和UNION ALL【简单易懂】
  • 深入解析@Validated注解:Spring 验证机制的核心工具
  • 层归一化(Layer Normalization) vs 批量归一化(Batch Normalization)
  • mysql 有哪些存储引擎、区别是什么
  • 行星际激波在日球层中的传播:Propagation of Interplanetary Shocks in the Heliosphere (第二部分)
  • Maven工具学习使用(十一)——部署项目到仓库
  • 3.4 函数单调性与曲线的凹凸性
  • 欢乐力扣:删除链表的倒数第n个节点
  • vue @import引入CSS scoped无效 造成全局样式污染
  • 【LeetCode 热题100】二叉树遍历入门:从中序遍历到层序与右视图(力扣94 / 102/199)(Go语言版)
  • 【今日三题】小易的升级之路(模拟+gcd) / 礼物的最大价值(动态规划) / 对称之美(字符串哈希)
  • 50道SQL练习题
  • HarmonyOS:Map Kit简介