洛谷乐多赛 yyy loves Maths VI (mode)
题目描述
他让redbag找众数
他还特意表示,这个众数出现次数超过了一半
一共n个数,而且保证有
n<=2000000
而且每个数<2^31-1
时间限制 1s
空间限制 3.5M(你没看错3.5M)(实际后来改成了5M)
题解:
一眼众数感觉很水,直接存下来,sort一下,然后统计连续出现次数
但是5M???
发现,2000000的空间开不下, 但是可以开下一半??
然后就先输入前1000000个。sort,记录出现次数最多的数,和它的出现次数。
再输入剩下的,sort,记录出现次数最多的数,和它的出现次数。
两者出现次数较大的就是众数。
证明??
题目关键:众数出现次数超过一半。
说明,两个最多的数一定至少有一个是那个众数。然后,最多数不是众数的那个,一定不如另一个是众数的数出现次数多。
就可以做了。
代码:
#include<bits/stdc++.h>
using namespace std;
const int N=+;
int a[N];
int mx1,num1,tot;
int mx2,num2;
int n;
int main()
{
scanf("%d",&n);
for(int i=;i<=n/;i++){
scanf("%d",&a[i]);
}
sort(a+,a+n/+);
for(int i=;i<=n/;i++){
tot=;
while(i+<=n/&&a[i]==a[i+]){
tot++;i++;
}
if(tot>mx1) mx1=tot,num1=a[i];
}
for(int i=;i<=n-n/;i++){
scanf("%d",&a[i]);
}
sort(a+,a+n-n/+);
for(int i=;i<=n-n/;i++){
tot=;
while(i+<=n-n/&&a[i]==a[i+]){
tot++;i++;
}
if(tot>mx2) mx2=tot,num2=a[i];
}
if(mx1<mx2) swap(num1,num2);
printf("%d",num1);
return ;
}
原题3.5M就不行了。
但是,还有什么摩尔投票法。很机智。连1000000数组也不用。
开一个房子,进去一个数,如果房子里没有数,就打上它的标记。
如果房间里的数相同,cnt++
如果不同,带走一个这个数。即cnt--
最后剩下的一定是众数。
因为占比过半,所以为所欲为啊。
代码就不贴了。
洛谷乐多赛 yyy loves Maths VI (mode)的更多相关文章
- 洛谷P2397 yyy loves Maths VI (mode)
P2397 yyy loves Maths VI (mode) 题目背景 自动上次redbag用加法好好的刁难过了yyy同学以后,yyy十分愤怒.他还击给了redbag一题,但是这题他惊讶的发现自己居 ...
- 「洛谷P2397」 yyy loves Maths VI (mode) 解题报告
P2397 yyy loves Maths VI (mode) 题目背景 自动上次redbag用加法好好的刁难过了yyy同学以后,yyy十分愤怒.他还击给了redbag一题,但是这题他惊讶的发现自己居 ...
- bzoj2456 / P2397 yyy loves Maths VI (mode)
P2397 yyy loves Maths VI (mode) 神奇的摩尔投票法(大雾) 保证众数个数大于一半. 两两相消,剩下的那个必定是众数. 我们只要开2个变量,一个存个数,一个存值即可. (l ...
- [洛谷2397]yyy loves Maths VI
题目背景 自动上次redbag用加法好好的刁难过了yyy同学以后,yyy十分愤怒.他还击给了redbag一题,但是这题他惊讶的发现自己居然也不会,所以只好找你 题目描述 他让redbag找众数他还特意 ...
- 洛谷 P2397:yyy loves Maths VI (mode)(摩尔投票算法)
题目背景 自动上次redbag用加法好好的刁难过了yyy同学以后,yyy十分愤怒.他还击给了redbag一题,但是这题他惊讶的发现自己居然也不会,所以只好找你 题目描述 [h1]udp2:第一题因为语 ...
- 【luogu P2397 yyy loves Maths VI (mode) 】 题解
题目链接:https://www.luogu.org/problemnew/show/P2397 卡空间. 对于众数出现次数 > n/2 我们考虑rand. 每次正确的概率为1/2,五个测试点, ...
- [P2397] yyy loves Maths VI (mode)
Link: P2397 传送门 Solution: (1)在这里记录一个小小的黑科技:摩尔投票法 (线性时间复杂度,$O(1)$的空间复杂度求众数) 从数组的第一个元素开始,假定它代表的群体的人数是最 ...
- Luogu P2397 yyy loves Maths VI (mode)
题目传送门 虽然只是一道黄题,但还是学到了一点新知识-- 摩尔投票法 用\(O(1)\)的内存,\(O(n)\)的时间来找出一串长度为n的数中的众数,前提是众数出现的次数要大于\(n/2\) 方法很简 ...
- 洛谷P2396 yyy loves Maths VII
P2396 yyy loves Maths VII 题目背景 yyy对某些数字有着情有独钟的喜爱,他叫他们为幸运数字;然而他作死太多,所以把自己讨厌的数字成为"厄运数字" 题目描述 ...
随机推荐
- 20155239吕宇轩 Exp1 PC平台逆向破解(5)M
20155239 网络对抗 Exp1 PC平台逆向破解(5)M 实验内容 (1).掌握NOP, JNE, JE, JMP, CMP汇编指令的机器码(1分) (2)掌握反汇编与十六进制编程器 (1分) ...
- 20155331《网络对抗》Exp5 MSF基础应用
20155331<网络对抗>Exp5 MSF基础应用 基础问题回答 用自己的话解释什么是exploit,payload,encode 答:exploit就是漏洞利用.exploit就是利用 ...
- Scala学习(二)--- 控制结构和函数
控制结构和函数 摘要: 本篇主要学习在Scala中使用条件表达式.循环和函数,你会看到Scala和其他编程语言之间一个根本性的差异.在Java或C++中,我们把表达式(比如3+4)和语句(比如if语句 ...
- Windows下的Anaconda+OpenCV的环境配置
Windows下的Anaconda+OpenCV的环境配置
- 【DDD】业务建模实践 —— 发布帖子
本文是基于上一篇‘业务建模战术’的实践,主要讲解‘发表帖子’场景的业务建模,包括:业务建模.业务模型.示例代码:示例代码会使用java编写,文末附有github地址.相比于<领域驱动设计> ...
- Asp.net MVC Razor常见问题及解决方法(转载>云中客)
没有经验的童鞋就是这样磕磕碰碰出来的经验. 1,Datatype的错误提示消息无法自定义 这也许是Asp.net MVC的一个Bug.ViewModel中定义了DataType为Date字段: 1 2 ...
- Airmon-ng抓包&破解wifi
安装 aircrack获取(aircrack源) sudo apt-get install aircrack-ng 配置 安装组件 sudo apt-get install build-essent ...
- 全局最小割StoerWagner算法详解
前言 StoerWagner算法是一个找出无向图全局最小割的算法,本文需要读者有一定的图论基础. 本文大部分内容与词汇来自参考文献(英文,需***),用兴趣的可以去读一下文献. 概念 无向图的割:有无 ...
- linux内核分析第一次实验
http://blog.sina.com.cn/s/blog_78e559950102wneg.html
- Linux内核分析(第四周)
扒开系统调用的三层皮(上) 一.用户态.内核态.中断 (上周课件有学习到) 1.地址空间是一个显著的标志(是逻辑地址,不是物理地址) 2.CPU每条指令的读取都是通过cs:eip这两个寄存器:0xc0 ...