题目描述

他让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)的更多相关文章

  1. 洛谷P2397 yyy loves Maths VI (mode)

    P2397 yyy loves Maths VI (mode) 题目背景 自动上次redbag用加法好好的刁难过了yyy同学以后,yyy十分愤怒.他还击给了redbag一题,但是这题他惊讶的发现自己居 ...

  2. 「洛谷P2397」 yyy loves Maths VI (mode) 解题报告

    P2397 yyy loves Maths VI (mode) 题目背景 自动上次redbag用加法好好的刁难过了yyy同学以后,yyy十分愤怒.他还击给了redbag一题,但是这题他惊讶的发现自己居 ...

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

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

  4. [洛谷2397]yyy loves Maths VI

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

  5. 洛谷 P2397:yyy loves Maths VI (mode)(摩尔投票算法)

    题目背景 自动上次redbag用加法好好的刁难过了yyy同学以后,yyy十分愤怒.他还击给了redbag一题,但是这题他惊讶的发现自己居然也不会,所以只好找你 题目描述 [h1]udp2:第一题因为语 ...

  6. 【luogu P2397 yyy loves Maths VI (mode) 】 题解

    题目链接:https://www.luogu.org/problemnew/show/P2397 卡空间. 对于众数出现次数 > n/2 我们考虑rand. 每次正确的概率为1/2,五个测试点, ...

  7. [P2397] yyy loves Maths VI (mode)

    Link: P2397 传送门 Solution: (1)在这里记录一个小小的黑科技:摩尔投票法 (线性时间复杂度,$O(1)$的空间复杂度求众数) 从数组的第一个元素开始,假定它代表的群体的人数是最 ...

  8. Luogu P2397 yyy loves Maths VI (mode)

    题目传送门 虽然只是一道黄题,但还是学到了一点新知识-- 摩尔投票法 用\(O(1)\)的内存,\(O(n)\)的时间来找出一串长度为n的数中的众数,前提是众数出现的次数要大于\(n/2\) 方法很简 ...

  9. 洛谷P2396 yyy loves Maths VII

    P2396 yyy loves Maths VII 题目背景 yyy对某些数字有着情有独钟的喜爱,他叫他们为幸运数字;然而他作死太多,所以把自己讨厌的数字成为"厄运数字" 题目描述 ...

随机推荐

  1. vb6/ASP FORMAT MM/DD/YYYY

    VB6或者ASP 格式化时间为 MM/dd/yyyy 格式,竟然没有好的办法, Format 或者FormatDateTime 竟然结果和系统设置的区域语言的日期和时间格式相关.意思是尽管你用诸如 F ...

  2. WPF应用

    代码 private void button1_Click(object sender, RoutedEventArgs e) { calculate sa = new calculate(int.P ...

  3. LORA---关于LORA的30个常见问题解答

    1) 什么是LoRa调制? LoRa (Long Range,远距离)是一种调制技术,与同类技术相比,提供更长的通信距离.调制是基于扩频技术,线性调制扩频(CSS)的一个变种,具有前向纠错(FEC). ...

  4. cocos2d-x学习记录3——CCTouch触摸响应

    游戏不同于影音,强交互性是其一大特色,在游戏中主要体现为接受用户的输入并响应.智能手机触摸是其重要的输入方式. 在cocos2d-x中,触摸分为单点触摸和多点触摸. 单点触摸:主要继承CCTarget ...

  5. PowerBI开发 第十四篇:使用M公式添加列

    PowerBI的查询编辑器使用Power Query M公式语言来定义查询模型,它是一种富有表现力的数据糅合(Mashup)语言,一个M查询可以计算(Evalute)一个表达式,得到一个值. 对于开发 ...

  6. Markdown打造高逼格博客

    这里首先假设读者你已经掌握了Markdown与GitHub的基本用法 如果不会, 请先自行百度或Google, 我目前还没写Markdown与GitHub的教程 看云只是一个推荐, 可以认为协助生成格 ...

  7. onSaveInstanceState和onRestoreInstanceState触发的时机

    先看Application Fundamentals上的一段话: Android calls onSaveInstanceState() before the activity becomes vul ...

  8. 在Windows上安装配置Git

    用安装 https://git-scm.com/ 官网下载安装包 (官网有安装步骤 https://git-scm.com/book/zh/v1/%E8%B5%B7%E6%AD%A5-%E5%AE%8 ...

  9. R-CNN阅读笔记

    论文地址:<Rich feature hierarchies for accurate object detection and semantic segmentation> 论文包含两个 ...

  10. Android-TabLayout设置内容宽度以及下划线宽度

    默认图: 效果图: 项目中使用到需要像今日头条那种实现顶部横向滑动标题功能,本人项目中使用TabLayout+ViewPager实现,但是,实现后默认的TabLayout间距特别大,并且下划线,文字大 ...