zoukankan      html  css  js  c++  java
  • A.出题人的RP值

    链接:https://ac.nowcoder.com/acm/contest/358/A

    题意:

    众所周知,每个人都有自己的rp值(是个非负实数),膜别人可以从别人身上吸取rp值。
    然而当你膜别人时,别人也会来膜你,互膜一段时间后,你们就平分了两人原有的rp值,当你膜过一个人之后,你就不能再膜那个人了
    出题人发现自己的rp值为x,出题人周围有n个人,第i个人的rp值为a[i]
    你要选择膜哪些人和膜人的顺序,使出题人的最终rp值最大

    第一行两个数n,x,人数和出题人的初始rp值
    第二行n个数,第i个数a[i]表示第i个人的rp值
    输出保留三位小数

    思路:

    将n个人从小到大排序,从小到大遍历,膜RP值比自己高的就好。

    代码:

    #include <bits/stdc++.h>
    using namespace std;
    const int MAXN = 100000+10;
    int a[MAXN];
     
    int main()
    {
        int n,x;
        scanf("%d%d",&n,&x);
        for (int i = 1;i<=n;i++)
            scanf("%d",&a[i]);
        sort(a+1,a+n+1);
        double sum = x;
        for (int i = 1;i <= n;i++)
            if (a[i] > sum)
                sum = (sum + a[i])/2;
        printf("%.3lf
    ",sum);
     
        return 0;
    }
    

      

  • 相关阅读:
    ASP.NET MVC学习笔记-----ActionInvoker
    quartz启动报错
    THUSC 2021 游记
    C++下随机数的生成
    友链
    memset一些技巧
    CodeForces Round #705 总结&题解
    php计算两坐标距离
    vue中使用keepAlive组件缓存遇到的坑
    vue 中 keepAlive
  • 原文地址:https://www.cnblogs.com/YDDDD/p/10290761.html
Copyright © 2011-2022 走看看