G 音乐鉴赏(非二分解法)

二分解法参看https://blog.csdn.net/weixin_43701790/article/details/104288964

思路

目的明确就是求一个期望E,如果我们知道了每个人优秀的概率,那么每个人优秀的概率求和除以总人数就是班级优秀的概率期望值,因为转换为如何表示出来每个人优秀的概率。

假设成绩占比为x,则平时成绩占比为(1 - x),如果一个同学平时成绩为s,他想优秀就必须总成绩\geq90,也就是s\times (1-x)+y*x\geq 90,y为随机打分的成绩,那么也就是说y最低是(90 - s\times (1-x))\div x才会优秀,所以他优秀的概率就是从这分数开始到90为止这个区间的长度除以整个打分区间的长度,即(90-(90-s \times (1-x))\div x)\div 90,这个就是这个人优秀的概率,可以看出这个概率是一个只与平时成绩s和成绩占比x相关的式子,最后对所有的概率求和得\sum _{1}^{n} p_{i},最后讲概率和除以总人数n就得到期望,即(\sum _{1}^{n} p_{i}) \div n=0.1,最后可以化成如下形式

x=\frac{(\sum_{1}^{n}s_{i}) - 90n}{9n-90n+ \sum _{1}^{n}s_{i}}

根据这个式子计算即可

/*************************************************************************
	> File Name: G.cpp
	> Author: amoscykl
	> Mail: [email protected] 
	> Created Time: 2020年02月13日 星期四 12时26分10秒
 ************************************************************************/

#include<bits/stdc++.h>
using namespace std;
const int N = 101000;
double a[N];
int n;
int main()
{
	scanf("%d", &n);
	for (int i = 1; i <= n; i++)scanf("%lf", a + i);
	double sum = 0.0;
	for (int i = 1; i <= n; i++){
		sum += a[i];
	}
	double res = (sum - 90.0 * n) / (9.0 * n - 90.0 * n + sum);
	printf("%.2lf%c\n", res * 100, '%');
	return 0;
}
发布了204 篇原创文章 · 获赞 13 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_43701790/article/details/104294032
G