zoukankan      html  css  js  c++  java
  • BZOJ2456: mode

    Description

    给你一个n个数的数列,其中某个数出现了超过n div 2次即众数,请你找出那个数。

    Input

    第1行一个正整数n。
    第2行n个正整数用空格隔开。

    Output

        一行一个正整数表示那个众数。

    Sample Input

    5
    3 2 3 1 3

    Sample Output

    3

    HINT

    100%的数据,n<=500000,数列中每个数<=maxlongint。

    zju2132 The Most Frequent Number

    Solution

    这题出题人丧心病狂

    卡空间卡到炸。不能开数组

    你甚至不能用$using namespace std$和万能头

    然后采用$5$个变量,才能卡过去

    很神的一个做法,用当前数去抵消不同的数——因为保证这个众数出现次数大于$frac{n}{2}$

    #include <cstdio>
    
    int n , tot , t , x ;
    
    int main() {
        scanf( "%d" , &n ) ;
        for( int i = 1 ; i <= n ; i ++ ) {
            scanf( "%d" , &x ) ;
            if( x == t ) tot ++ ;
            else if( !tot ) t = x , tot = 1 ;
            else tot -- ;
        }
        printf( "%d
    " , t ) ;
    }
  • 相关阅读:
    Linux命令大全
    Restframework 视图组件与序列号组件的应用.
    Linux常用命令
    数据结构
    MongoDB
    算法
    Flask 语音分析
    Flask Session ,pymysql ,wtforms组件 虚拟virtualenv venv
    Flask 视图,模板,蓝图.
    Flask初识
  • 原文地址:https://www.cnblogs.com/henry-1202/p/9745312.html
Copyright © 2011-2022 走看看