`
闫老三
  • 浏览: 100210 次
社区版块
存档分类
最新评论

杭电ACM4520 小Q系列故事——最佳裁判

    博客分类:
  • ACM
 
阅读更多

问题描述:

过去的2012年对小Q来说是很悲催的一年,失恋了12次,每次都要郁闷1个来月。
  好在小Q是个体育迷,在最痛苦的时候,他常常用观看各种体育节目来麻醉自己,比如伦敦奥运会期间,小Q就常常在周末邀上一群单身同事聚在自己的蜗居,一边畅饮啤酒,一边吹牛。
  小Q最喜欢看的是跳水,主要原因也是因为这个项目有中国人参加,而且中国队员获胜的几率很大,一般不会再给自己添堵,不然何谈看体育疗情伤呢。
  跳水项目的一个重要环节就是裁判打分,小Q他们有时候会觉得某个裁判不公平,是不是有意在压中国队员的分数。于是每当一个队员跳水完毕,他们几个也像电视上的裁判那样给队员打分,并且规定,谁的分数和最终得分最接近谁就是他们当中的最佳裁判,现场奖励啤酒一杯!
  其中,最终得分是这样计算的:N个人打分,去掉一个最高分,去掉一个最低分,然后剩余分数相加,再除以N-2即为最终得分。
  凭借“看体育疗情伤”而练就的专业体育知识,小Q几乎每局必胜,这一夜,小Q注定要烂醉如泥了......

详细请见:http://acm.hdu.edu.cn/showproblem.php?pid=4520

思路:

这个题很简单,直接遍历得到最小的那个值就可以了,不多说了,多说了都是泪啊。

代码:

#include <stdio.h>  
#include <stdlib.h>  
#define N 20  
float a[N];  
float myabs(float a)  
{  
    return a>0?a:-a;  
}  
int main()  
{  
    int n;  
    int i;  
    float sum;  
    float avg;  
    float  min;  
    int minI;  
    float maxStore;  
    float minStore;  
    while(scanf("%d",&n)!=EOF&&n!=0)  
    {  
        avg=sum=0;  
        min=10000;  
        maxStore=0;  
        minStore=100000;  
        for(i=0;i<n;i++)  
        {  
            scanf("%f",a+i);  
            sum+=a[i];  
            if(a[i]>maxStore) maxStore=a[i];  
            if(a[i]<minStore) minStore=a[i];  
        }  
        sum=sum-maxStore-minStore;  
        avg=sum/(n-2);  
     
        for(i=0;i<n;i++)  
        {  
            if(min>myabs(a[i]-avg))  
            {  
                min=myabs(a[i]-avg);  
                minI=i;  
            }  
        }  
        printf("%d\n",minI+1);  
     
    }  
    return 0;  
}

 转载请注明原文地址:http://uwind.iteye.com/blog/1928411

1
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics