洛谷 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;
}
相关推荐
STY_fish_201238 分钟前
P11855 [CSP-J2022 山东] 部署
算法·图论·差分
myw07120539 分钟前
湘大头歌程-Ride to Office练习笔记
c语言·数据结构·笔记·算法
H_BB40 分钟前
算法详解:滑动窗口机制
数据结构·c++·算法·滑动窗口
淀粉肠kk41 分钟前
【C++】封装红黑树实现Mymap和Myset
数据结构·c++
Zero-Talent42 分钟前
“栈” 算法
算法
橘子编程43 分钟前
经典排序算法全解析
java·算法·排序算法
waeng_luo43 分钟前
【鸿蒙开发实战】智能数据洞察服务:待回礼分析与关系维护建议算法
算法·ai编程·鸿蒙
风筝在晴天搁浅43 分钟前
代码随想录 279.完全平方数
算法
不穿格子的程序员1 小时前
从零开始刷算法——字串与区间类经典题:前缀和 + 单调队列双杀
算法·前缀和·哈希表·双向队列·单调队列
坚持就完事了1 小时前
十大排序算法
数据结构·算法·排序算法