zoukankan      html  css  js  c++  java
  • 2020牛客寒假算法基础集训营4 G音乐鉴赏

    题目描述

    作为“音乐鉴赏”课的任课老师,你的课程作为刷学分好课一直受到广泛欢迎。但这一学期,学校制定了新的标准,你的课的优秀率(分数超过90分的人数)被限制在10%以下!
    为了应对这个调整,你要求所有的同学都写了一篇论文,并使用随机算法打出了0-90之间的分数,分数可能不是整数。这里的随机是指,对于在[0,90]这个闭区间上的任何一对等长的区间,分数出现在其中的概率均是相同的。在期末的分数占比为百分之多少的时候,你的课程优秀率期望恰好在10%?保证所有同学的平时成绩都高于90分。

    输入描述:

    输入第一行包含一个整数 n,保证n是10的倍数。
    第二行包含 n 个整数,代表同学们的平时成绩。
    $ 10leq nleq 100000 $。

    输出描述:

    输出一行一个百分数,代表期末分数占比多少为合适。保留两位小数。

    输入

    10
    99 99 99 99 99 99 99 99 99 99

    输出

    50.00%

    传送门:

    https://ac.nowcoder.com/acm/contest/3005/G

    思路:

    设期末随机分数为$ y $,占比为$ x $(也就是要求的答案)。

    则最终的分数 $ score=y*x+(1-x)*a_igeq 90 $ 其中$ a_i $为平时成绩。

    化简可得 $ ygeq frac{90-(1-x)*a_i}{x} $.

    所以一个人是优秀学生的概率 $ p_i $ 即为 $ y_{min} $-90与90的比值,

    即 $ p_i=cfrac{90-cfrac{90-(1-x)*a_i}{x}}{90}  $

    根据题意优秀学生的总人数不能超过10%,即 $ nsum p_i=0.1*n $

    解得 $ x=frac{90*n-sum}{81*n-sum} $其中,$ sum $为总的平时成绩。

    代码:

     1 #include<bits/stdc++.h>
     2 
     3 using namespace std;
     4 
     5 int main()
     6 
     7 {
     8     int n;
     9     scanf("%d", &n);
    10     double sum = 0;
    11     for(int i = 1; i <= n; i++)
    12 
    13     {
    14         double x;
    15         scanf("%lf", &x);
    16         sum += x;
    17     }
    18 
    19     printf("%.2lf%%
    ", 100*(90.0 * n - sum) / (81.0 * n - sum) );
    20 }
  • 相关阅读:
    How to resolve mysql problem when you get code 2003(10061) and 1130
    Windows connect to mysql failed: can't get hostname for your address
    Python基础教程总结(二)
    Python基础教程总结(一)
    Begin to study Deep Learning
    再坚持一点点
    技术到管理的必经之路(2)
    技术到管理的必经之路(1)
    c#进阶(7)—— 异步编程基础(async 和 await 关键字)
    c#进阶(6)—— 网络通信基础知识
  • 原文地址:https://www.cnblogs.com/yyaoling/p/12301407.html
Copyright © 2011-2022 走看看