第九届蓝桥杯省赛 C++ A组 - 付账问题

news2024/11/29 13:36:42

✍个人博客:https://blog.csdn.net/Newin2020?spm=1011.2415.3001.5343
📚专栏地址:蓝桥杯题解集合
📝原题地址:付账问题
📣专栏定位:为想考甲级PAT的小伙伴整理常考算法题解,祝大家都能取得满分!
❤️如果有收获的话,欢迎点赞👍收藏📁,您的支持就是我创作的最大动力💪

问题描述

几个人一起出去吃饭是常有的事。

但在结帐的时候,常常会出现一些争执。

现在有 n 个人出去吃饭,他们总共消费了 S 元。

其中第 i 个人带了 ai 元。

幸运的是,所有人带的钱的总数是足够付账的,但现在问题来了:每个人分别要出多少钱呢?

为了公平起见,我们希望在总付钱量恰好为 S 的前提下,最后每个人付的钱的标准差最小。

这里我们约定,每个人支付的钱数可以是任意非负实数,即可以不是 1 分钱的整数倍。

你需要输出最小的标准差是多少。

标准差的介绍:标准差是多个数与它们平均数差值的平方平均数,一般用于刻画这些数之间的“偏差有多大”。

形式化地说,设第 i 个人付的钱为 bi 元,那么标准差为 :

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OHTOg5ng-1673831661293)(AcWing 蓝桥杯辅导.assets/19_6734517a16-p1.png)]

输入格式

第一行包含两个整数 n、S;

第二行包含 n 个非负整数 a1, …, an。

输出格式

输出最小的标准差,四舍五入保留 4 位小数。

数据范围

1≤n≤5×105,
0≤ai≤109,
0≤S≤1015

输入样例1:

5 2333
666 666 666 666 666

输出样例1:

0.0000

输入样例2:

10 30
2 1 4 7 4 8 3 6 4 7

输出样例2:

0.7928

思路

由题可知,标准差的公式如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BicCoebY-1673831661297)(AcWing 蓝桥杯辅导.assets/image-20221227144755868.png)]

根据均值不等式:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C15fBwtq-1673831661300)(AcWing 蓝桥杯辅导.assets/image-20221227144833252.png)]

可知 x 1 + x 2 + . . . + x n x_1+x_2+...+x_n x1+x2+...+xn 等价于 ( b 1 − s / n ) 2 + ( b 2 − s / n ) 2 + . . . + ( b n − s / n ) 2 (b_1-s/n)^2+(b_2-s/n)^2+...+(b_n-s/n)^2 (b1s/n)2+(b2s/n)2+...+(bns/n)2 ,又因为 b 1 + b 2 + . . . + b n = s b_1+b_2+...+b_n=s b1+b2+...+bn=s s / n ∗ n = s s/n*n=s s/nn=s,故 b 1 − s / n + b 2 − s / n + . . . + b n − s / n = s − s = 0 b_1-s/n+b_2-s/n+...+b_n-s/n=s-s=0 b1s/n+b2s/n+...+bns/n=ss=0

所以我们可以得出如下结论:

  1. a i > = s / n a_i>=s/n ai>=s/n 时,取平均数,这里可由上面等式推出。
  2. a i < s / n a_i<s/n ai<s/n 时, b i = a i b_i=a_i bi=ai b i < a i b_i<a_i bi<ai,这里可由两个值的均值不等式推出(证明略)。

总的来说,就是如果带的钱够交总花费的平均数就至少交这个平均数;如果不够则有多少出多少,然后将平均数与其差值分摊到其他人身上即让别人帮你垫。

代码

#include<bits/stdc++.h>
using namespace std;

const int N = 500010;
int a[N];
int n;

int main()
{
    long double s;
    cin >> n >> s;
    for (int i = 0; i < n; i++)    scanf("%d", &a[i]);
    sort(a, a + n);    //对携带金额进行排序

    //钱多的人扶持钱少的人
    long double res = 0, avg = s / n;
    for (int i = 0; i < n; i++)
    {
        long double cur = s / (n - i);
        if (a[i] < cur)    cur = a[i];
        res += (cur - avg) * (cur - avg);
        s -= cur;
    }

    //打印结果
    printf("%.4Lf\n", sqrt(res / n));

    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/166144.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

理解CSS

CSS 作为前端技术栈中关键一环&#xff0c;对页面元素及样式呈现起到了直接作用。本节课旨在通过对 CSS 的工作流程及原理、页面中 CSS 使用方法等详细解读&#xff0c;帮助前端新手建立对 CSS 的全面而深刻的认知。 CSS概念 CSS 即 Cascading Style Sheets&#xff0c;是用来…

认识涤生大数据的几个月,彻底改变了我

1自我介绍 大家好&#xff0c;我是泰罗奥特曼&#xff0c;毕业于东北的一所不知名一本大学&#xff0c;学校在一个小城市里面&#xff0c;最热闹的地方是一个四层楼的商城&#xff0c;专业是信息管理与信息系统&#xff0c;由于是调剂的&#xff0c;所以我也不知道这个专业是干…

[JavaEE]阻塞队列

专栏简介: JavaEE从入门到进阶 题目来源: leetcode,牛客,剑指offer. 创作目标: 记录学习JavaEE学习历程 希望在提升自己的同时,帮助他人,,与大家一起共同进步,互相成长. 学历代表过去,能力代表现在,学习能力代表未来! 目录: 1.阻塞队列的概念 2.标准库中的阻塞队列 3.生产者…

1999-2019年全国、各省市直辖区居民收入和消费支出情况面板数据

1999-2019年全国、各省市直辖区居民收入和消费支出情况面板数据 1、时间&#xff1a;1999-2019年 2、指标&#xff1a; 可支配收入、城镇居民家庭平均每人全年消费性支出、食品消费支出、医疗保健消费支出、农村居民家庭人均纯收入、农村居民家庭平均每人生活消费支出、食品…

【Unity URP】设置光源层Light Layers

光源层 (Light Layers) 功能允许配置某些光源仅影响特定的游戏对象。 此功能可以用于加亮在暗处的物体。 1.开启光源层&#xff0c;并设置光源层名称 在URP资源中&#xff0c;点击Lighting右侧的垂直省略号图标 (⋮)&#xff0c;勾选Show Additional Properties&#xff0c…

【已解决】WARNING: Ignoring invalid distribution xxx

问题解决方案解释问题 WARNING: Ignoring invalid distribution -umpy (c:\users\xxx\appdata\roaming\python\python36\site-packages) 解决方案 在报错的路径下(c:\users\xxx\appdata\roaming\python\python36\site-packages)&#xff0c;找到~对应文件夹&#xff0c;此处…

Pytorch实战笔记(1)——BiLSTM 实现情感分析

本文展示的是使用 Pytorch 构建一个 BiLSTM 来实现情感分析。本文的架构是第一章详细介绍 BiLSTM&#xff0c;第二章粗略介绍 BiLSTM&#xff08;就是说如果你想快速上手可以跳过第一章&#xff09;&#xff0c;第三章是核心代码部分。 目录1. BiLSTM的详细介绍2. BiLSTM 的简单…

【三年面试五年模拟】算法工程师的独孤九剑秘籍(第十二式)

Rocky Ding公众号&#xff1a;WeThinkIn写在前面 【三年面试五年模拟】栏目专注于分享AI行业中实习/校招/社招维度的必备面积知识点与面试方法&#xff0c;并向着更实战&#xff0c;更真实&#xff0c;更从容的方向不断优化迭代。也欢迎大家提出宝贵的意见或优化ideas&#xff…

【算法】二叉树

❤️ Author&#xff1a; 老九 ☕️ 个人博客&#xff1a;老九的CSDN博客 &#x1f64f; 个人名言&#xff1a;不可控之事 乐观面对 &#x1f60d; 系列专栏&#xff1a; 文章目录二叉树数组转化为二叉树二叉树转化为二叉链表二叉树的遍历排序二叉树BST&#xff08;二叉搜索树&…

新思路dp

参考文章思路&#xff1a;点我 题&#xff1a;C. Count Binary Strings 前言&#xff1a;嗯,今天做这个题的时候&#xff0c;想了一堆乱七八糟的解法&#xff0c;想记录一下hhhhhh。 题意&#xff1a;输入以类似于邻接表的形式给出字符串&#xff08;只由000和111组成&#…

深入理解MySQL中的bin log、redo log、undo log

bin log&#xff08;二进制日志&#xff09; 什么是bin log&#xff1f; 记录数据库执行的写入性操作信息&#xff0c;以二进制的形式保存在磁盘中。 由服务层产生&#xff0c;所有储存引擎都支持。 bin log属于逻辑日志。 bin log日志有三种格式&#xff1a;STATMENT、ROW、M…

详解数据库的锁机制及原理

详解数据库的锁机制及原理1.数据库锁的分类2.行锁共享锁排他锁更新锁3.意向锁4.锁机制解释数据库隔离级别1.数据库锁的分类 本图源自CSDN博主&#xff1a;Stephen.W 数据库锁一般可以分为两类&#xff0c;一个是悲观锁&#xff0c;一个是乐观锁 乐观锁一般是指用户自己实现的…

Java 中是如何获取 IP 属地的

细心的小伙伴可能会发现&#xff0c;抖音新上线了 IP 属地的功能&#xff0c;小伙伴在发表动态、发表评论以及聊天的时候&#xff0c;都会显示自己的 IP 属地信息下面&#xff0c;我就来讲讲&#xff0c;Java 中是如何获取 IP 属地的&#xff0c;主要分为以下几步 通过 HttpSer…

HuggingFace (transformers) 自定义图像数据集、使用 DeiT 模型、Trainer 进行训练回归任务

资料 Hugging Face 官方文档&#xff1a;https://huggingface.co/ Hugging Face 代码链接&#xff1a;https://github.com/huggingface/transformers 1. 环境准备 创建 conda 环境激活 conda 环境下载 transformers 依赖下载 transformers 中需要处理数据集的依赖下载 pytor…

win10录屏文件在哪?如何找到录制后的文件

在工作和学习中&#xff0c;我们会遇到需要使用录屏工具录制电脑屏幕的情况&#xff0c;很多小伙伴在录制完win10电脑屏幕之后&#xff0c;找不到录制的视频文件。win10录屏文件在哪&#xff1f;今天小编教大家如何找到电脑录屏文件和录制win10电脑屏幕的方法&#xff0c;如果您…

带你认识QOwnNotes

导读QOwnNotes 是一款自由而开源的笔记记录和待办事项的应用&#xff0c;可以运行在 Linux、Windows 和 mac 上。这款程序将你的笔记保存为纯文本文件&#xff0c;它支持 Markdown 支持&#xff0c;并与 ownCloud 云服务紧密集成。 QOwnNotes 的亮点就是它集成了 ownCloud 云服…

数据量大也不卡的bi软件有哪些?

用过数据分析软件的都知道&#xff0c;很多的软件在数据量不算特别大的时候还好&#xff0c;分析效率、响应速度都不慢&#xff0c;但一旦使用的数据量超过一定范围&#xff0c;系统就会明显变慢&#xff0c;甚至崩溃。随着企业业务的发展扩张&#xff0c;数据分析的精细化&…

Linksys WRT路由器刷入OpenWrt与原厂固件双固件及切换

Linksys路由器OpenWrt与原厂固件双固件刷入及切换双固件机制使用原厂固件刷其他固件使用原厂固件切换启动分区使用OpenWrt刷入Sysupgrade使用OpenWrt刷入Img使用OpenWrt切换分区通用的硬切换分区&#xff08;三次重启&#xff09;双固件机制 新机器默认有一个原厂固件&#xf…

详解分布式系统核心概念——CAP、CP和AP

最近研究Sykwalking&#xff0c;当调研 oap如何进行集群部署时发现&#xff1a;skywalking oap 之间本身不能搭建集群&#xff0c;需要一个集群管理器来组建集群&#xff0c;它支持nacos、zookeeper、Kubernetes、Consul、Etcd 五种集群管理器。我重点比较了nacos和zookeeper&a…

python中的闭包和装饰器

目录 一.闭包 1.闭包的用途和用法 简单闭包 2.nonlocal关键字的作用 ATM闭包实现 注意事项 小结 二.装饰器 装饰器的一般写法&#xff08;闭包写法&#xff09; 装饰器的语法糖写法 一.闭包 1.闭包的用途和用法 先看如下代码&#xff1a; 通过全局变量account_amount来…