• 结账问题 (一点点的数学知识)(蓝桥杯)


    试题 历届真题 结账问题【第九届】【省赛】【A组】
         
    资源限制
    内存限制:256.0MB   C/C++时间限制:1.0s   Java时间限制:3.0s   Python时间限制:5.0s
    问题描述
      几个人一起出去吃饭是常有的事。但在结帐的时候,常常会出现一些争执。
    
      现在有 n 个人出去吃饭,他们总共消费了 S 元。其中第 i 个人带了 ai 元。幸运的是,所有人带的钱的总数是足够付账的,但现在问题来了:每个人分别要出多少钱呢?
    
      为了公平起见,我们希望在总付钱量恰好为 S 的前提下,最后每个人付的钱的标准差最小。这里我们约定,每个人支付的钱数可以是任意非负实数,即可以不是1分钱的整数倍。你需要输出最小的标准差是多少。
    
      标准差的介绍:标准差是多个数与它们平均数差值的平方平均数,一般用于刻画这些数之间的“偏差有多大”。形式化地说,设第 i 个人付的钱为 bi 元,那么标准差为 :
    
    
    输入格式
      从标准输入读入数据。
    
      第一行包含两个整数 n、S;
      第二行包含 n 个非负整数 a1, ..., an。
    输出格式
      输出到标准输出。
    
      输出最小的标准差,四舍五入保留 4 位小数。
      保证正确答案在加上或减去 10^−9 后不会导致四舍五入的结果发生变化。
    样例1输入
      5 2333
      666 666 666 666 666
    样例输出
    0.0000
    样例说明
      每个人都出 2333/5 元,标准差为 0。
    
      再比如:
    样例输入
    10 30
    2 1 4 7 4 8 3 6 4 7
    样例输出
    0.7928
    数据说明
      对于 10% 的数据,所有 ai 相等;
      对于 30% 的数据,所有非 0 的 ai 相等;
      对于 60% 的数据,n ≤ 1000;
      对于 80% 的数据,n ≤ 10^5;
      对于所有数据,n ≤ 5 × 10^5, 0 ≤ ai ≤ 10^9。
    
    
      资源约定:
      峰值内存消耗(含虚拟机) < 256M
      CPU消耗 < 1000ms
    
    
      请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。
    
      注意:
      main函数需要返回0;
      只使用ANSI C/ANSI C++ 标准;
      不要调用依赖于编译环境或操作系统的特殊函数。
      所有依赖的函数必须明确地在源文件中 #include <xxx>
      不能通过工程设置而省略常用头文件。
    
      提交程序时,注意选择所期望的语言类型和编译器类型。
    View problem

    思路:

    • 小于平均值的 元素 直接算。
    • 大于平均值的元素 平摊小于平均值的元素所缺的大小。
    • 让大于平均值的元素付的钱一样就可以了,(自己想想 4,分成那2个数的平方是最小的 (2,2))
  • 相关阅读:
    AdvStringGrid使用小结
    svn提示out of date的解决方法
    delphi之socket通讯
    Delphi的Socket编程步骤
    C++ Socket编程步骤
    centos7安装docker
    centos7安装指南
    UltraISO制作U盘启动盘
    浅谈linux 文件的三个时间
    自动配置zabbix-agent
  • 原文地址:https://www.cnblogs.com/Lamboofhome/p/16090144.html
Copyright © 2020-2023  润新知