zoukankan      html  css  js  c++  java
  • HDU 4520 小Q系列故事――最佳裁判(STL)

    小Q系列故事——最佳裁判

    Problem Description
      过去的2012年对小Q来说是很悲催的一年,失恋了12次,每次都要郁闷1个来月。
      好在小Q是个体育迷,在最痛苦的时候,他常常用观看各种体育节目来麻醉自己,比如伦敦奥运会期间,小Q就常常在周末邀上一群单身同事聚在自己的蜗居,一边畅饮啤酒,一边吹牛。
      小Q最喜欢看的是跳水,主要原因也是因为这个项目有中国人参加,而且中国队员获胜的几率很大,一般不会再给自己添堵,不然何谈看体育疗情伤呢。
      跳水项目的一个重要环节就是裁判打分,小Q他们有时候会觉得某个裁判不公平,是不是有意在压中国队员的分数。于是每当一个队员跳水完毕,他们几个也像电视上的裁判那样给队员打分,并且规定,谁的分数和最终得分最接近谁就是他们当中的最佳裁判,现场奖励啤酒一杯!
      其中,最终得分是这样计算的:N个人打分,去掉一个最高分,去掉一个最低分,然后剩余分数相加,再除以N-2即为最终得分。
      凭借“看体育疗情伤”而练就的专业体育知识,小Q几乎每局必胜,这一夜,小Q注定要烂醉如泥了......
     
    Input
      输入包含多组测试用例。
      每组测试用例首先是一个整数N,表示裁判的人数,然后接着是N个实数,表示N个裁判的打分Pi,N为0时结束输入。
      [Technical Specification]
      5 <= N <= 20
      0<=Pi<=10
     
    Output
      请计算并输出最佳裁判的编号,每组数据输出占一行,若有多人并列最佳裁判,只要求输出编号最小的那个。
      特别说明:裁判编号按照打分的顺序从1开始,依次类推,最后一人编号为N。
     
    Sample Input
    5 8.3 9.2 8.7 8.9 9.0
    0
     
    Sample Output
    4
     
    Sample Input
    水,去掉最高分最低分求出平均分,然后每个分数(除最高分最低分外)和平均分比,最接近的输出那个序号.
     
    #include <cstdio>
    #include <iostream>
    #include <string>
    #include <sstream>
    #include <cstring>
    #include <stack>
    #include <queue>
    #include <algorithm>
    #include <cmath>
    #include <map>
    #define PI acos(-1.0)
    #define ms(a) memset(a,0,sizeof(a))
    #define msp memset(mp,0,sizeof(mp))
    #define msv memset(vis,0,sizeof(vis))
    using namespace std;
    //#define LOCAL
    struct Node
    {
        int no;
        double fen;
    };
    int cmp(Node a,Node b)
    {
        return a.fen<b.fen;
    }
    int main()
    {
    #ifdef LOCAL
        freopen("in.txt", "r", stdin);
    #endif // LOCAL
        ios::sync_with_stdio(false);
        vector<Node> v;
        int n;
        Node t;
        while(cin>>n&&n)
        {
            v.clear();
            for(int i=1;i<=n;i++)
            cin>>t.fen,t.no=i,v.push_back(t);
            sort(v.begin(),v.end(),cmp);
            double sum=0;
            for(int i=1;i<n-1;i++)sum+=v[i].fen;
            sum/=n-2;
            double minn=999;
            int mini=1;
            for(int i=1;i<n-1;i++)
            {
                if(abs(v[i].fen-sum)<minn)
                minn=abs(v[i].fen-sum),mini=i;
            }
            printf("%d
    ",v[mini].no);
        }
        return 0;
    }
    View Code
  • 相关阅读:
    Uva11235
    Uva11300/BZOJ1045/BZOJ1465/BZOJ3292
    树形背包模板
    Miller-Rabin素性测试
    BZOJ1500 : [NOI2005]维修数列-fhq_Treap
    COGS2421 [HZOI 2016]简单的Treap
    用 fhq_Treap 实现可持久化平衡树
    hdu 1010(DFS) 骨头的诱惑
    hdu 1026(BFS+输出路径) 我要和怪兽决斗
    hdu 1072(BFS) 有炸弹
  • 原文地址:https://www.cnblogs.com/gpsx/p/5197841.html
Copyright © 2011-2022 走看看