zoukankan      html  css  js  c++  java
  • mode

    mode (jdoj-2905)

        题目大意:给你一个n个数的数列,其中某个数出现了超过$lfloorfrac{n}{2} floor$即众数,请你找出那个数。

        注释:n<=$5cdot 10^5$,数列中的数<=int。

        特殊判定:内存<=1MB。

          想法:看到特判......傻题秒变好题啊有木有!!显然,由于内存的限制,不支持我们开数组离散化。所以,yy.....yy......yy........咳咳,在此鸣谢(CQzhangyu lijinnn Edward♂Frog Tonyzhao GXZlegend)(忘记谁教我的了,枚举扩友)。我们可以开一个cnt记录一下当前出现次数最多的数的出现次数。怎么记录呢?如果当前数和我们所记录的不同,那么将所记录的cnt--,反之++。为什么成立?因为对于这里的每一个数,那个我们要求的数是到最后被减光的话cnt也是正的,故,成立。

        神题!铭记......

        最后,附上丑陋的代码......

     1 #include <cstdio>
     2 int main()
     3 {
     4     int n;
     5     scanf("%d",&n);
     6     int mx;
     7     int a;
     8     scanf("%d",&a);
     9     mx=a;
    10     int cnt=1;
    11     for(int i=2;i<=n;i++)
    12     {
    13         scanf("%d",&a);
    14         if(mx==a) cnt++;
    15         else
    16         {
    17             cnt--;
    18             if(!cnt) mx=a,cnt=1;
    19         }
    20     }
    21     printf("%d",mx);
    22     return 0;
    23 }

        小结:错误....没有啊

     

  • 相关阅读:
    Ubuntu20 修改网卡名称
    单臂路由实现不同vlan间通信
    配置trunk和access
    基于端口划分vlan
    Zabbix5.0服务端部署
    搭建LAMP环境部署opensns微博网站
    搭建LAMP环境部署Ecshop电商网站
    Zabbix 监控过程详解
    Zabbix agent端 配置
    Zabbix 监控系统部署
  • 原文地址:https://www.cnblogs.com/ShuraK/p/7931348.html
Copyright © 2011-2022 走看看