zoukankan      html  css  js  c++  java
  • (比赛)C

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

    Time Limit:200MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u

    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
     
    //比赛除了练习过的,就做出这个了,纪念一下
    //题目很简单,如果排序的话有个坑,就是题目是要输出最小的编号的,而不是数组编号最小的,如果有几个最佳裁判,而编号大的在前面,就会出错
     
     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <math.h>
     5 
     6 struct people
     7 {
     8     int num;
     9     double fen;
    10 }person [21];
    11 
    12 using namespace std;
    13 int main()
    14 {
    15     int N;
    16     double all,temp,min;
    17     int t;
    18     int i,j,k;
    19     while (scanf("%d",&N)&&N)
    20     {
    21         for (i=1;i<=N;i++)
    22         {
    23             scanf("%lf",&person[i].fen);
    24             person[i].num=i;
    25         }
    26 
    27         for (i=1;i<=N;i++)
    28         {
    29             k=i;
    30             for (j=i+1;j<=N;j++)
    31             {
    32                 if (person[j].fen<person[k].fen)
    33                 {
    34                     k=j;
    35                 }
    36             }
    37             if (k!=i)
    38             {
    39                 temp=person[k].fen;
    40                 person[k].fen=person[i].fen;
    41                 person[i].fen=temp;
    42 
    43                 t=person[k].num;
    44                 person[k].num=person[i].num;
    45                 person[i].num=t;
    46             }
    47         }
    48         all=0;
    49         for (i=2;i<=N-1;i++)
    50             all+=person[i].fen;
    51         all=all/(N-2);
    52 
    53         k=person[1].num;
    54         min=fabs(all-person[1].fen);
    55         for (i=1;i<=N;i++)
    56         {
    57             if (fabs(all-person[i].fen)<=min)
    58             {
    59                 if ((fabs(all-person[i].fen)==min)&&person[i].num<k)
    60                 {
    61                     k=person[i].num;
    62                     min=fabs(all-person[i].fen);
    63                 }
    64                 else if (fabs(all-person[i].fen)<min)
    65                 {
    66                     k=person[i].num;
    67                     min=fabs(all-person[i].fen);
    68                 }
    69             }
    70         }
    71         printf("%d
    ",k);
    72     }
    73     return 0;
    74 }
    View Code
     
     
     
     
     
     
  • 相关阅读:
    366. Find Leaves of Binary Tree输出层数相同的叶子节点
    716. Max Stack实现一个最大stack
    515. Find Largest Value in Each Tree Row查找一行中的最大值
    364. Nested List Weight Sum II 大小反向的括号加权求和
    156. Binary Tree Upside Down反转二叉树
    698. Partition to K Equal Sum Subsets 数组分成和相同的k组
    244. Shortest Word Distance II 实现数组中的最短距离单词
    187. Repeated DNA Sequences重复的DNA子串序列
    java之hibernate之基于主键的双向一对一关联映射
    java之hibernate之基于主键的单向一对一关联映射
  • 原文地址:https://www.cnblogs.com/haoabcd2010/p/5696202.html
Copyright © 2011-2022 走看看