zoukankan      html  css  js  c++  java
  • sicily 1046. Plane Spotting

                                    1046. Plane Spotting

    Time Limit: 1sec    Memory Limit:32MB 
    Description

    Craig is fond of planes. Making photographs of planes forms a major part of his daily life. Since he tries to stimulate his social life, and since it’s quite a drive from his home to the airport, Craig tries to be very efficient by investigating what the optimal times are for his plane spotting. Together with some friends he has collected statistics of the number of passing planes in consecutive periods of fifteen minutes (which for obvious reasons we shall call ‘quarters’). In order to plan his trips as efficiently as possible, he is interested in the average number of planes over a certain time period. This way he will get the best return for the time invested. Furthermore, in order to plan his trips with his other activities, he wants to have a list of possible time periods to choose from. These time periods must be ordered such that the most preferable time period is at the top, followed by the next preferable time period, etc. etc. The following rules define which is the order between time periods: 

    1. A period has to consist of at least a certain number of quarters, since Craig will not drive three hours to be there for just one measly quarter. 
    2. A period P1 is better than another period P2 if: 
    * the number of planes per quarter in P1 is higher than in P2; 
    * the numbers are equal but P1 is a longer period (more quarters); 
    * the numbers are equal and they are equally long, but period P1 ends earlier. 

    Now Craig is not a clever programmer, so he needs someone who will write the good stuff: that means you. So, given input consisting of the number of planes per quarter and the requested number of periods, you will calculate the requested list of optimal periods. If not enough time periods exist which meet requirement 1, you should give only the allowed time periods. 

    Input
    The input starts with a line containing the number of runs N. Next follows two lines for each run. The first line contains three numbers: the number of quarters (1–300), the number of requested best periods (1–100) and the minimum number of quarters Craig wants to spend spotting planes (1–300). The sec-nod line contains one number per quarter, describing for each quarter the observed number of planes. The airport can handle a maximum of 200 planes per quarter. 
    Output
    The output contains the following results for every run: 

    * A line containing the text “Result for run <N>:” where <N> is the index of the run. 

    * One line for every requested period: “<F>-<L>” where <F> is first quarter and <L> is the last quarter of the period. The numbering of quarters starts at 1. The output must be ordered such that the most preferable period is at the top. 
    Sample Input
     Copy sample input to clipboard 
    3
    10 5 5
    1 5 0 2 1 4 2 5 0 2 
    10 3 5
    10 3 1 4 2 6 3 0 8 0 
    5 5 5
    1 2 3 4 5
    Sample Output
    Result for run 1:
    4-8
    2-8
    6-10
    1-8
    2-6
    Result for run 2:
    1-6
    1-7
    1-9
    Result for run 3:
    1-5
    #include <iostream>
    #include <algorithm>
    #include <vector>
    
    using namespace std;
    
    struct re {
        re(double verage_, int endIndex_, int startIndex_)
            : verage(verage_), endIndex(endIndex_), startIndex(startIndex_) { }
        double verage;
        int endIndex;
        int startIndex;
    };
    
    bool cmp(const re &e1, const re &e2) {
        if (e1.verage > e2.verage)
            return true;
        if (e1.verage == e2.verage && (e1.endIndex - e1.startIndex) > (e2.endIndex - e2.startIndex))
            return true;
        if (e1.verage == e2.verage && (e1.endIndex - e1.startIndex) == (e2.endIndex - e2.startIndex) && 
                                    e1.endIndex < e2.endIndex)
            return true;
        return false;
    }
    
    int main(int argc, char* argv[])
    {
        int T, t = 1;
        cin >> T;
        while (t <= T) {
            int eleNum, bestNum, minLength, ele;
            vector<int> elements;
            cin >> eleNum >> bestNum >> minLength;
            int temp = eleNum;
            while (temp--) {
                cin >> ele;
                elements.push_back(ele);
            }
            cout << "Result for run " << t++ << ":" << endl;
            vector<re> result;
            for (int i = minLength; i <= eleNum; ++i) {
                for(int j = 0; j + i <= eleNum; ++j) {
                    double resultSum = 0;
                    for (int k = j; k - j < i; ++k) {
                        resultSum += elements[k];
                    }
                    resultSum /= i;
                    result.push_back(re(resultSum, j + i, j + 1));
                }
            } 
    
            sort(result.begin(), result.end(), cmp);
            int max_size = result.size() < bestNum ? result.size() : bestNum;
            for (int i = 0; i != max_size; i++){
                cout << result[i].startIndex << "-" << result[i].endIndex << endl;
            }
        }
    
        return 0;
    }
  • 相关阅读:
    求s=1+1+2+1+2+3+1+2+3+4......+n 分类: python 20121205 15:04 387人阅读 评论(0) 收藏
    虚拟机下安装Linux,提示CPU不支持64位的解决方法 20121203 15:50 637人阅读 评论(0) 收藏
    python中map()函数的使用 分类: python 20121220 16:18 121人阅读 评论(0) 收藏
    round()、pow()、return 分类: python 20121212 19:46 133人阅读 评论(0) 收藏
    python之enumerate 分类: python 20121205 10:55 311人阅读 评论(0) 收藏
    str判断字符串方法 分类: python 20121212 20:40 110人阅读 评论(0) 收藏
    创建文件,输出文件内容及打开模式 分类: python 20121224 16:49 155人阅读 评论(0) 收藏
    3.31Java对象的进化史(数据管理和企业管理共通之处)
    4.1Java一个典型类的定义和UML图
    4.2Java对象创建过程和this的本质
  • 原文地址:https://www.cnblogs.com/xiezhw3/p/3996965.html
Copyright © 2011-2022 走看看