美文网首页
1054 The Dominant Color(20 分)

1054 The Dominant Color(20 分)

作者: W杂货铺W | 来源:发表于2018-08-29 16:09 被阅读0次

    Behind the scenes in the computer's memory, color is always talked about as a series of 24 bits of information for each pixel. In an image, the color with the largest proportional area is called the dominant color. A strictly dominant color takes more than half of the total area. Now given an image of resolution M by N (for example, 800×600), you are supposed to point out the strictly dominant color.

    Input Specification:
    Each input file contains one test case. For each case, the first line contains 2 positive numbers: M (≤800) and N (≤600) which are the resolutions of the image. Then N lines follow, each contains M digital colors in the range [0,2​24​​ ). It is guaranteed that the strictly dominant color exists for each input image. All the numbers in a line are separated by a space.

    Output Specification:
    For each test case, simply print the dominant color in a line.

    Sample Input:

    5 3
    0 0 255 16777215 24
    24 24 0 0 24
    24 0 24 24 24

    Sample Output:

    24

    超时版本

    #include <iostream>
    using namespace std;
    // time out edition
    int main()
    {
        int wid,hei;
        int n[480000];
        int cnt[480000];
        cin >> wid >> hei;
        int num = wid*hei;
        int half = num/2;
        for(int i=0;i<num;i++)
        {
            int tem;
            scanf("%d",&tem);
            n[i] = tem;
            for(int j=0;j<i;j++)
            {
                if(n[i]==n[j]) {
                    cnt[i]++;
                }
            }
            if(cnt[i]>=half) {
                cout << n[i];
                return 0;
            }
        }
    }
    

    正确版本

    #include <iostream>
    #include <map>
    using namespace std;
    int main()
    {
        map<int, int> m;
        int wid,hei;
        cin >> wid >> hei;
        int num = wid*hei;
        int half = num/2;
        for(int i=0;i<num;i++)
        {
            int tem;
            scanf("%d",&tem);
            m[tem]++;
            if(m[tem]>half) {
                cout << tem;
                return 0;
            }
        }
    }
    

    note:
    c++的map和python的dict一样好用,key-value的统计的时候一定要想到。
    scanf的速度要比 cin 快好多,超时的时候要考虑替换,一开始就应该scanf

    相关文章

      网友评论

          本文标题:1054 The Dominant Color(20 分)

          本文链接:https://www.haomeiwen.com/subject/dakkwftx.html