洛谷 P8664 [蓝桥杯 2018 省 A] 付账问题

题目link

分析

对于第 i i i 个人,假设他前面的都已经付完,那么他的期望付钱数就是他后面的(包括他)的人数除以剩余的钱数,也就是: S ′ n − i + 1 \Large \frac{S^\prime}{n-i+1} n−i+1S′,但如果第 i i i 个人没有这么多钱,他就只能付 a i a_i ai 元,最后计算标准差即可。

考试时在期望付钱数这里卡住了,其余的跟正确思路大差不差。

注意开 long double 不然会挂 30 30 30 分。

代码

cpp 复制代码
#include <bits/stdc++.h>

using namespace std;

const int N = 5 * 1e5 + 5;
int n;
long double s, ans, avg, a[N];

int main(){
	cin >> n >> s;
	for(int i = 1; i <= n; i ++){
		cin >> a[i];
	}
	avg = s / n;
	sort(a + 1, a + n + 1);
	for(int i = 1; i <= n; i ++){
		long double cur = min(a[i], s / (n - i + 1));
		s -= cur;
		ans += (cur - avg) * (cur - avg); 
	}
	ans /= n, ans = sqrt(ans);
	cout << fixed << setprecision(4) << ans;
	return 0;
}
相关推荐
清风20226 分钟前
vllm 采样调研
人工智能·算法·机器学习
初次攀爬者21 分钟前
力扣解题-无重复字符的最长子串
后端·算法·leetcode
MekoLi2926 分钟前
生成式推荐系统:从“判别式匹配”到“生成式创造”的范式革命
后端·算法
SoulruiA31 分钟前
超容易理解+模版套路解决LeetCode 前序+中序、中序+后序、前序+后序遍历构造树问题
java·算法·力扣
wanderist.34 分钟前
算法模板-线段树
c++·算法
lcj251137 分钟前
蓝桥杯C++梳理(1):从入门到数组
c++·算法
sali-tec38 分钟前
C# 基于OpenCv的视觉工作流-章26-图像拼接
图像处理·人工智能·opencv·算法·计算机视觉
wanderist.41 分钟前
算法模板-01trie数
c++·算法
天若有情6731 小时前
IoC不止Spring!求同vs存异,两种反向IoC的核心逻辑
java·c++·后端·算法·spring·架构·ioc
tankeven1 小时前
HJ103 Redraiment的走法
c++·算法