luogu P2397 yyy loves Maths VI (mode)

Posted Manjusaka丶梦寒

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了luogu P2397 yyy loves Maths VI (mode)相关的知识,希望对你有一定的参考价值。

题目背景

自动上次redbag用加法好好的刁难过了yyy同学以后,yyy十分愤怒.他还击给了redbag一题,但是这题他惊讶的发现自己居然也不会,所以只好找你

题目描述

[h1]udp2:第一题因为语言性质问题,比赛结束后将所有c/c++的程序的内存调为2.2mb后重测。[/h1]

他让redbag找众数

他还特意表示,这个众数出现次数超过了一半

一共n个数,而且保证有

n<=2000000

而且每个数<2^31-1

输入输出格式

输入格式:

第一行一个整数n

第二行n个整数

 

输出格式:

一行,这个众数

 

输入输出样例

输入样例#1: 
5
2 3 3 3 3
输出样例#1: 
3

说明

时间限制 1s

空间限制 3.5M(你没看错3.5M)

有人想水过,但我告诉你这空间是不够的

//kkksc03偷偷地说:你随便输出一个数字吧,都有1/2的几率。不过这可是乐多赛,值得不值得你看着办。所以最好想一想正解。

 

这还不简单以第一个数为标准,第一个数出现次数为1,下一个数若与这个数相同,则这个数的次数+1,若不相同则-1,若做标准的数次数为零,则下个数将这个替换掉,因为重数出现次数超过了一半,所以最后剩下的那个标准数,只能是众数。

 

#include<bits/stdc++.h>
using namespace std;
int n,flag,x,cnt,now;
int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&x);
        if(cnt==0)now=x,cnt++;
        else
        {
            if(now==x)
            {
                cnt++;
            }
            else cnt--;
        }
    }
    printf("%d",now);
}

 

以上是关于luogu P2397 yyy loves Maths VI (mode)的主要内容,如果未能解决你的问题,请参考以下文章

题解Luogu P2397 yyy loves Maths VI (mode)

洛谷 P2397 yyy loves Maths VI (mode) 题解

luogu2393 yyy loves Maths II

luoguP2418 yyy loves OI IV

洛谷——P2393 yyy loves Maths II

洛谷 P2393 yyy loves Maths II