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。

正解:。。。

解题报告:

  首先题目要求的是出现次数大于n/2的数,显然这个数的出现次数比别的数都要多,那么我们可以考虑用这个数独特的超多的出现次数来得到这个数。

  因为超过一半,不妨考虑一定会大于其他所有数的个数之和。那么我们每得到一个数,就与之前保存的数(即当前出现次数最多且未被抵消的数)比较,如果与之前的不同,tot--,相当于是抵消了一个。如果发现tot=0,那么说明之前的数字耗尽了,那么我们把新的读进来的数作为新的保存的数就可以了。

  神奇的地方就在于这个抵消操作。最后得到的数字一定会是众数。

  然而我开始MLE了2发,头文件开多了。。。

 #include <cstdio>
using namespace std;
int n,now,now_tot,cun;
int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++) {
scanf("%d",&now);
if(now_tot==) { now_tot=; cun=now; }
else if(now==cun) now_tot++;
else now_tot--;
}
printf("%d",cun);
return ;
}

BZOJ2456 mode的更多相关文章

  1. 【bzoj2456】 mode

    http://www.lydsy.com/JudgeOnline/problem.php?id=2456 (题目链接) 只看了一眼,直觉便告诉我这是水题.于是跟某码农打赌说10分钟做出来叫爸爸,结果输 ...

  2. 【Bzoj2456】mode

    Position: http://www.lydsy.com/JudgeOnline/problem.php?id=2456 List Bzoj2456 mode List Description S ...

  3. 【BZOJ2456】mode 神奇的卡内存题

    以后把题解放在前面,估计没人看题解先看题... 内存1M,4个int(其实对内存的概念十分模糊),众数即为出现次数最多的数,可以用抵消的思想(但是众数不是可以是一大坨么...) #include &l ...

  4. bzoj2456

    有趣的题目 空间1mb,所以开数组的算法就不要想了(我一开始没看到……) 仔细读题,然后发现这里他限定众数为出现超过n div 2次 也就是说,这个数可以对应每一个不相同的数消掉,最终还剩下这个数 也 ...

  5. bzoj2456 mode (思路)

    不能把数存下来. 于是来打擂台,如果新数和他不相等,cnt--,否则cnt++.如果cnt<=0了,那个新数就来把它顶掉,然后把cnt重置成1 最后在台上的就是那个次数大于N/2的众数 (连&l ...

  6. bzoj千题计划171:bzoj2456: mode

    http://www.lydsy.com/JudgeOnline/problem.php?id=2456 任意删除序列中两个不同的数,众数仍然是众数 不停的删,剩下的最后的数一定是众数 具体实现: 记 ...

  7. bzoj2456 / P2397 yyy loves Maths VI (mode)

    P2397 yyy loves Maths VI (mode) 神奇的摩尔投票法(大雾) 保证众数个数大于一半. 两两相消,剩下的那个必定是众数. 我们只要开2个变量,一个存个数,一个存值即可. (l ...

  8. 【神奇の做法】bzoj2456 mode

    题解:http://www.tuicool.com/articles/BfQBzif #include<cstdio> using namespace std; int n,x,ans,t ...

  9. [BZOJ2456] mode(一道很有意思的题)

    传送门 看到这个题的第一反应是离散化+线段树乱搞.. eeeeeeeeeeee感觉数据结构学傻了,其实直接存下来,sort一遍,n/2的位置的就是答案 当然前提是空间够的话 1m的空间连数组都开不下 ...

随机推荐

  1. uGUI练习(六) ScrollView

    练习目标 练习uGUI的滑动组件 一.相关组件 ScrollRect Mask Grid Layout Group Scrollbar 二.步骤 1.创建一个Panel,命名为ScrollRect,添 ...

  2. C++容器的复制

    C++容器的复制不同于Java Java是引用复制,复制的仅仅是对象的引用, 在需要复制容器内对象的副本集合的情况,需要使用Clone方法,而且要注意clone方法的浅拷贝 深拷贝 C++的容器复制 ...

  3. javascript之享元模式

    实现享元模式的一般步骤: 1.将所有外在数据从目标类中剥离.具体做法是尽可能多的删除该类的属性,所删除的应该是那种因实例而异的属性.构造函数的参数也要这样处理,这些参数应该被添加到该类的各个方法. 这 ...

  4. 关于URL编码/javascript/js url 编码

    一.问题的由来 URL就是网址,只要上网,就一定会用到. 一般来说,URL只能使用英文字母.阿拉伯数字和某些标点符号,不能使用其他文字和符号.比如,世界上有英文字母的网址 “http://www.ab ...

  5. Spring之AOP

    package org.zln.module.test3_aop.interceptor; import org.aspectj.lang.ProceedingJoinPoint; import or ...

  6. python算法:rangeBitwiseAnd(连续整数的与)

    def rangeBitwiseAnd(self, m, n): i = 0 while m != n: m >>= 1 n >>= 1 i += 1 return n < ...

  7. 【C#】【MySQL】C# 查询数据库语句@Row:=@Row+1

    如何实现数据库查询产生虚拟的一列序号的功能: ) )AS r; 该语句可以实现产生虚拟的一列数据在MySQL中运行没有问题. 但是在C#里面调用去出现了错误"Parameter '@ROW' ...

  8. Lenovo GTX960M 配置CUDA

    文章是出自我的原创,是写在新浪博客里面的:http://blog.sina.com.cn/s/blog_13b7eb5b20102wvxw.html 首先,软件的版本你选择很重要,我们配置了两天才成功 ...

  9. 浪潮之巅IT那点事之三——神奇的规律

    “道可道,非常道”是老子在<道德经>中的开篇第一句话,这句话的意思是:万事万物其真理是可以探索并道说得出来的,但这些真理并非是永恒的,天道轮转,没有永恒不变的真理(来自百度百科).在IT行 ...

  10. 获取技能的成功经验和关于C语言学习的调查 2015528

    内容提要 你有什么技能比大多人(超过90%以上)更好?针对这个技能的获取你有什么成功的经验?与老师博客中的学习经验有什么共通之处? 有关C语言学习的调查 你是怎么学习C语言的?(作业,实验,教材,其他 ...