题解 P2397 【yyy loves Maths VI (mode)】

· · 题解

其实这道题,众数的个数大于n的一半是十分重要的条件。

这样我们就可以这么做。

我们来yy一个小房子,每当有数进来的时候,如果房子是空的,那么将这个房子贴上自己的标签。

如果房子里已经有和自己相同数字了,那么进去和它一起♂住。

如果房子里有和自己不同的数字,带一个走出♂房♂子。

最后房子里还剩下的数一定就是众数了。

所以那个大于一半的条件很重要。

···cpp

#include<cstdio>
using namespace std;
int n,m;
int house,cnt;
int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&m);
        if(house==m)cnt++;
        if(cnt==0){
            house=m;cnt++;
        }
        if(house!=m){
            cnt--;
        }
    }
    printf("%d",house);
    return 0;
}

···