• POJ 1018


    #include<iostream>
    #define MAXN 105
    #define inf 10000000
    #include<vector>
    #include<iomanip>
    #include<algorithm>
    
    using namespace std;
    
    struct node
    {
        double b;
        double p;
    };
    
    vector<double> coll;
    
    node _m[MAXN][MAXN];
    int size[MAXN];
    int n;
    void sort_f();
    int main()
    {
        //freopen("acm.acm","r",stdin);
        int i;
        int j;
        int k;
        double min;
        int test;
        double sum;
        double max;
        double temp;
        bool boo;
        cin>>test;
        while(test --)
        {
            boo = false;
            sum = 0;
            max = -1;
            cin>>n;
            for(i = 0; i < n; ++ i)
            {
                cin>>size[i];
                for(j = 0; j < size[i]; ++ j)
                {
                    cin>>_m[i][j].b>>_m[i][j].p;
                    coll.push_back(_m[i][j].b);
                }
            }
            sort(coll.begin(),coll.end());
            sort_f();
            for(k = 0; k < coll.size(); ++ k)
            {
                if(k > 0 && coll[k] == coll[k-1])
                    continue;
                sum = 0;
                for(i = 0; i < n; ++ i)
                {
                    min = inf;
                    boo = false;
                    for(j = 0; j < size[i]; ++ j)
                    {
                        if(_m[i][j].b >= coll[k])
                        {
                            if(_m[i][j].p < min)
                                min = _m[i][j].p;
                            boo = true;
                        }
                        else
                            break;
                    }
                    if(boo == false)
                    {
                        sum = 0;
                        break;
                    }
                    sum += min;
                }
                if(!boo)
                    break;
                if( (temp = double(coll[k]/sum)) > max)
                {
                    max = temp;
                    //cout<<max<<endl
                }
                
            }
            cout<<setiosflags(ios::fixed)<<setprecision(3)<<max<<endl;
            coll.clear();
        }
    }
    
    void sort_f()
    {
        int i;
        int j;
        int k;
        for(i = 0; i < n; ++ i)
        {
            for(j = 0; j < size[i]; ++ j)
            {
                for(k = j+1; k < size[i]; ++ k)
                {
                    if(_m[i][k].b > _m[i][j].b)
                    {
                        iter_swap(&_m[i][k].b,&_m[i][j].b);
                        iter_swap(&_m[i][k].p,&_m[i][j].p);
                    }
                }
            }
        }
    }

    关注我的公众号,当然,如果你对Java, Scala, Python等技术经验,以及编程日记,感兴趣的话。 

    技术网站地址: vmfor.com

  • 相关阅读:
    redis知识梳理
    网络编程
    netty
    浏览器发数据到服务器的过程
    spring事务
    springboot-
    《食堂远程下单系统》需求规格说明书
    《食堂远程下单系统》设计规格说明书
    OrderOnline——功能需求
    OrderOnline——项目概述
  • 原文地址:https://www.cnblogs.com/gavinsp/p/4563211.html
Copyright © 2020-2023  润新知