zoukankan      html  css  js  c++  java
  • TOJ 4095: love168yk的选美大赛

    4095: love168yk的选美大赛 分享至QQ空间

    Time Limit(Common/Java):1000MS/3000MS     Memory Limit:65536KByte
    Total Submit: 51            Accepted:7

    Description

     

    话说最近love168yk参加了数信学院的选美大赛,跟他同台参加的还有N-1位MM,love168yk自知没有多大希望赢得比赛,但是他又不想这么早就被淘汰(分数最低就被淘汰),只要每个人的分数一样他就熬过第一轮预选赛了,分数是由两部分组成的,一部分是裁判给的分数,另一部分是观众给的,每个人一开始都有裁判给的分Ji,分数层次不齐,接着观众投票阶段就看观众对于选手的支持率Yi了,观众的支持率按百分比来算,且每个观众最多给一位选手投票,也就是说总的支持率加起来刚好是1,总分是选手得到的裁判分+观众支持率*总裁判分(N个人得到的裁判分总和X)即Ji+Yi*X,分数最低的就淘汰了,现在让你写一个程序来,让你计算出每个选手应得到多少的支持率,满足不能出现单个最低分数,应为出现了单个最低就将被淘汰,且要满足每个人得到的支持率最小,且不可能出现裁判总分为0的情况!!!

    Input

     

    测试数据有多组,第一行T表示有T组数据,接下来T行,每行的第一个数字N表示有多少参赛选手,后面跟着N个数据Ji都用空格隔开。2<N<200,  0>=Ji<=100.

    Output

     

    每组测试数据每行输出"Case #x: ",接着N个数据分别表示每位选手应得得支持率mi,x从1开始,mi保留两位小数。

    Sample Input 

    4
    2 20 10
    2 10 0
    4 25 25 25 25
    3 24 30 21

    Sample Output

     

    Case #1: 33.33 66.67
    Case #2: 0.00 100.00
    Case #3: 25.00 25.00 25.00 25.00
    Case #4: 34.67 26.67 38.67

    这个题还是比较好的,早上写了一下wa,下午搬完书回来就在想

    最早的贪心过程就是按照权值其实和求全部数的平均数思想一样,不过是绕了个弯

    提交一发wa,然后发现可能有输出负数的操作,又交了几发

    最后我的贪心过程是选小的数看它们最多能加到多少,然后求下平均数,大数均输出0.00就好

    其实这个题就限制了只能用类似的贪心过程,下面的数相加可能大于100也可能小于100的

    #include <stdio.h>
    #include <algorithm>
    using namespace std;
    int a[205],b[205];
    int main()
    {
        int T;
        while(~scanf("%d",&T))
        {
            int k=1;
            while(T--)
            {
                int n,s1=0;
                scanf("%d",&n);
                for(int i=1; i<=n; i++)
                {
                    scanf("%d",&a[i]);
                    b[i]=a[i];
                    s1+=a[i];
                }
                sort(b+1,b+n+1);
                int f=n,s=b[1];
                for(int i=2; i<=n; i++)
                {
                    s+=b[i];
                    if(s+s1<i*b[i])
                    {
                        f=i-1;
                        s-=b[i];
                        break;
                    }
                }
                s+=s1;
                printf("Case #%d:",k++);
                for(int i=1; i<=n; i++)
                    if(a[i]>b[f])
                        printf(" 0.00");
                    else
                        printf(" %.2f",(s*1./f-a[i])*100/s1);
                putchar(10);
            }
        }
        return 0;
    }

     

     

  • 相关阅读:
    DGA域名可以是色情网站域名
    使用cloudflare加速你的网站隐藏你的网站IP
    167. Two Sum II
    leetcode 563. Binary Tree Tilt
    python 多线程
    leetcode 404. Sum of Left Leaves
    leetcode 100. Same Tree
    leetcode 383. Ransom Note
    leetcode 122. Best Time to Buy and Sell Stock II
    天津Uber优步司机奖励政策(12月28日到12月29日)
  • 原文地址:https://www.cnblogs.com/BobHuang/p/7469664.html
Copyright © 2011-2022 走看看