zoukankan      html  css  js  c++  java
  • 1054 The Dominant Color (20 分)

    水~。

    map<int,int> mp;
    int n,m;
    
    int main()
    {
        cin>>m>>n;
    
        for(int i=0;i<n;i++)
            for(int j=0;j<m;j++)
            {
                int color;
                cin>>color;
                mp[color]++;
            }
    
        for(auto t:mp)
        {
            if(t.se > n*m/2)
            {
                cout<<t.fi<<endl;
                break;
            }
        }
        //system("pause");
        return 0;
    }
    

    本题如果不用map,那么可以采用这样的思路解决:由于题目要求必须超过半数,因此有超过半数的数相同的,如果采用两两不相同的数相互抵消的做法,最后一定会剩下那个超过半数的数字。于是可以设置一个变量ans存放答案,设置另一个变量count计数ans出现的次数,然后在读入时判断ans与读入的数字是否相等,如果不相等,则令其抵消一次ans(即令count);如果相等,则令count加1。当然,如果某步count被抵消至0,则令新的数字为ans。这样最后剩下来的数字一定是所求数字。

  • 相关阅读:
    poj 2155 B
    hdu 1556 A
    hdu 1556 A
    #366 A-C
    最长上升子序列
    Codeforces Div3 #501 A-E(2) F以后补
    字典的建立 查找
    字典序大小
    头文件模板
    01背包模板 及 优化
  • 原文地址:https://www.cnblogs.com/fxh0707/p/14429436.html
Copyright © 2011-2022 走看看