【luogu P2397 yyy loves Maths VI (mode) 】 题解
题目链接:https://www.luogu.org/problemnew/show/P2397
卡空间。
对于众数出现次数 > n/2 我们考虑rand。
每次正确的概率为1/2,五个测试点,全对的概率为1/32。
所以:
#include <ctime>
#include <cstdio>
#include <cstdlib>
using namespace std;
int n, m;
int main()
{
scanf("%d",&n);
srand(time(NULL));
int r = rand()%n+1;
for(int i = 1; i <= n; i++)
{
scanf("%d",&m);
if(i == r)
{
printf("%d",m);
return 0;
}
}
}
正解是一个叫做摩尔♂投票法的东西。
先取出一个数。
再按顺序拿出每个数。
如果这两个数不一样,那么我们就都扔掉。
如果这两个数一样,我们就留着一个。
这样到最后一定是众数。
???(我也不知道这样证对不对,xjb证明的)
#include <cstdio>
using namespace std;
int ans, cnt, n, now;
int main()
{
scanf("%d",&n);
for(int i = 1; i <= n; i++)
{
scanf("%d",&now);
if(ans == now) cnt++;
if(cnt == 0)
{
ans = now; cnt++;
}
if(ans != now) cnt--;
}
printf("%d",ans);
return 0;
}
【luogu P2397 yyy loves Maths VI (mode) 】 题解的更多相关文章
- Luogu P2397 yyy loves Maths VI (mode)
题目传送门 虽然只是一道黄题,但还是学到了一点新知识-- 摩尔投票法 用\(O(1)\)的内存,\(O(n)\)的时间来找出一串长度为n的数中的众数,前提是众数出现的次数要大于\(n/2\) 方法很简 ...
- 洛谷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 ...
- [P2397] yyy loves Maths VI (mode)
Link: P2397 传送门 Solution: (1)在这里记录一个小小的黑科技:摩尔投票法 (线性时间复杂度,$O(1)$的空间复杂度求众数) 从数组的第一个元素开始,假定它代表的群体的人数是最 ...
- 「洛谷P2397」 yyy loves Maths VI (mode) 解题报告
P2397 yyy loves Maths VI (mode) 题目背景 自动上次redbag用加法好好的刁难过了yyy同学以后,yyy十分愤怒.他还击给了redbag一题,但是这题他惊讶的发现自己居 ...
- 洛谷 P2397:yyy loves Maths VI (mode)(摩尔投票算法)
题目背景 自动上次redbag用加法好好的刁难过了yyy同学以后,yyy十分愤怒.他还击给了redbag一题,但是这题他惊讶的发现自己居然也不会,所以只好找你 题目描述 [h1]udp2:第一题因为语 ...
- [洛谷2397]yyy loves Maths VI
题目背景 自动上次redbag用加法好好的刁难过了yyy同学以后,yyy十分愤怒.他还击给了redbag一题,但是这题他惊讶的发现自己居然也不会,所以只好找你 题目描述 他让redbag找众数他还特意 ...
- 洛谷乐多赛 yyy loves Maths VI (mode)
题目描述 他让redbag找众数 他还特意表示,这个众数出现次数超过了一半 一共n个数,而且保证有 n<=2000000 而且每个数<2^31-1 时间限制 1s 空间限制 3.5M(你没 ...
- P2393 yyy loves Maths II
P2393 yyy loves Maths IIlong double比如保留5位小数*1000000都变成整数最后再/1000000避免精度误差scanf("%Lf",& ...
随机推荐
- 创建bat文件打开指定目录的cmd窗口
默认的 cmd打开的是用户目录,如下: 有时,这样非常不方便,还得不断的cd到我们要使用的目录,例如,我们想改成默认制定的目录是D盘的cmd窗口 代码如下: cmd /k cd/d " ...
- [實現DDD] 第11章 工廠
創建過程中須考慮一些重要細節, 否則所創建的聚合將處於不正確的狀態, 使用適當的工廠方法可以確保這一點, 而客戶端只需輸入基本的參數(通常是值對象), 另外, 工廠能更好地表達出通用語言, 使團隊成員 ...
- ssh免密码登录快速配置方法
环境需求: 两台Linux主机 A (192.168.3.101)和 B(192.168.3.102),如何使用主机 A 免密码登录 主机B ? 配置步骤: 首页登录主机 A ,在主机A上生成自己 ...
- HDU 4027—— Can you answer these queries?——————【线段树区间开方,区间求和】
Can you answer these queries? Time Limit:2000MS Memory Limit:65768KB 64bit IO Format:%I64d & ...
- 【Linux】Linux系统启动过程
1.Linux系统的启动过程并不是大家想象中的那么复杂,其过程可以分为5个阶段: 内核的引导. 运行 init. 系统初始化. 建立终端 . 用户登录系统. 1.Linux系统的启动过程并不是大家想象 ...
- Python3.4 获取百度网页源码并保存在本地文件中
最近学习python 版本 3.4 抓取网页源码并且保存在本地文件中 import urllib.request url='http://www.baidu.com' #上面的url一定要写明确,如果 ...
- C# Attribute应用:类签名
在应用别人接口的时候,总是要用签名,很是不理解签名这是怎么知道做的.通过对Attribute的学习了解.大体可以用Attribute来做签名应用. 具体过程如下: 首先我们要先定义一个类,该类继承At ...
- netty笔记(一)--Demo
Netty是一个Java开源框架,用于传输数据.由server和client组成,封装了Java nio,支持TCP, UDP等协议.这里写了一Demo EchoClientHandler.java ...
- vim-plug
vim包管理器vim-plug 安装 curl -fLo ~/.vim/autoload/plug.vim --create-dirs \ https://raw.githubusercontent. ...
- css background 背景知识详解
background 背景属性 我们知道元素有前景色color,与之对应的还有背景色,通过background我们可以为元素添加实色(background-color)和任意多个背景图片(backgr ...