西电OJ - 1042 另一个简单游戏

题目链接:http://acm.xidian.edu.cn/problem.php?id=1042

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
/****************************************************************************************************************
            题意:和上次西电网络赛 G 题相似,这次较简单,规定了每次可以选两个数进行处理
            思路:
            1,从小到大排序,将前两个数求平均数
            2,将平均数存入数列,重新排序,重复1
            3,详见之前的 西电网络赛-G
            4,之前没见过精度问题,wa了一下午,然后看到有人说要用1e-10精度,不知道什么意思,但是AC了
            (补上:学习精度)
****************************************************************************************************************/
double a[105];
int main()
{
    int T,N;
    cin>>T;
    while(T--)
    {
        cin>>N;
        //memset(a,0,sizeof(a));
        for(int i = 0;i < N;i ++)
            cin>>a[i];
        sort(a,a+N);
        int le=N,id=0;
        double temp;
        if(N == 1)
            temp=a[0]/2;
        else{
            while(le > 1)
            {
                temp=(a[id]+a[id+1])/2;
                id++;
                a[id]=temp;
                sort(a+id,a+N);
                le--;
            }
        }
        printf("%.2lf\n",temp+(1e-10));
    }
    return 0;
}



 

posted on 2016-04-27 22:21  Jstyle  阅读(333)  评论(0编辑  收藏  举报

导航