洛谷 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;
}
相关推荐
玖釉-13 小时前
编辑距离(Edit Distance)——从字符串相似度到动态规划经典模型
算法·leetcode·动态规划
c2385614 小时前
c/c++中的二叉树进阶
c语言·c++·算法
吴可可12314 小时前
Win7下C#开发AutoCAD首选版本
算法
Halo_tjn14 小时前
反射与设计模式2
java·开发语言·算法
_日拱一卒15 小时前
LeetCode:46全排列
算法·leetcode·职场和发展
剑挑星河月15 小时前
31.下一个排列
java·算法·leetcode
凌波粒15 小时前
LeetCode--98.验证二叉搜索树(二叉树)
算法·leetcode·职场和发展
Ameilide15 小时前
数据结构 树 二叉树
数据结构
Kurisu57515 小时前
深度拆解:从令牌桶到滑动窗口,高并发系统限流算法的数学本质与边界
java·网络·算法
哈泽尔都15 小时前
运动控制教学——5分钟学会力控算法(阻抗/导纳/力位混合)
c++·python·算法·决策树·贪心算法·机器人·gpu算力