网站建设维护论文,网站制作软件免费下载,商标图案大全图片,手机网站设计公司只找亿企邦几个人一起出去吃饭是常有的事。但在结帐的时候#xff0c;常常会出现一些争执。现在有 n 个人出去吃饭#xff0c;他们总共消费了 S 元。其中第 i 个人带了 ai 元。幸运的是#xff0c;所有人带的钱的总数是足够付账的#xff0c;但现在问题来了#xff1a;每个人分别要出…几个人一起出去吃饭是常有的事。但在结帐的时候常常会出现一些争执。现在有 n 个人出去吃饭他们总共消费了 S 元。其中第 i 个人带了 ai 元。幸运的是所有人带的钱的总数是足够付账的但现在问题来了每个人分别要出多少钱呢为了公平起见我们希望在总付钱量恰好为 S 的前提下最后每个人付的钱的标准差最小。这里我们约定每个人支付的钱数可以是任意非负实数即可以不是 1分钱的整数倍。你需要输出最小的标准差是多少。标准差的介绍标准差是多个数与它们平均数差值的平方平均数一般用于刻画这些数之间的“偏差有多大”。形式化地说设第 i个人付的钱为 bi 元那么标准差为 :输入格式第一行包含两个整数 n、S第二行包含 n个非负整数 a1, …, an。输出格式输出最小的标准差四舍五入保留 4 位小数。数据范围1≤n≤5×1050≤ai≤1090≤S≤1015输入样例15 2333
666 666 666 666 666输出样例10.0000输入样例210 30
2 1 4 7 4 8 3 6 4 7输出样例20.7928难度中等时/空限制1s / 64MB来源第九届蓝桥杯省赛CA组,第九届蓝桥杯省赛JAVAA组算法标签 贪心#includeiostream
#includecstring
#includecmath
#includecstdio
#includealgorithm
using namespace std;
const int N 500010;
long long int n, a[N];
int main()
{double s;cin n s;for (int i 0; i n; i) scanf(%lld, a[i]);sort(a, a n);double res 0, avg s / n;for (int i 0; i n; i){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;
}