P2397 yyy loves Maths VI (mode)

题目背景

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

题目描述

udp2:第一题因为语言性质问题,比赛结束后将所有c/c++的程序的内存调为2.2mb后重测。

他让redbag找众数

他还特意表示,这个众数出现次数超过了一半

一共n个数,而且保证有

n<=2000000

而且每个数<2^31-1

输入输出格式

输入格式:

第一行一个整数n

第二行n个整数

输出格式:

一行,这个众数

输入输出样例

输入样例#1:

5
2 3 3 3 3

输出样例#1:

3

说明

时间限制 1s

空间限制 3.5M(你没看错3.5M)

有人想水过,但我告诉你这空间是不够的

//kkksc03偷偷地说:你随便输出一个数字吧,都有1/2的几率。不过这可是乐多赛,值得不值得你看着办。所以最好想一想正解。


思路

题目意思很简单,就是求众数。然鹅,,,,,空间贼小,,,,

这里的突破口就是这个众数出现次数超过了一半,所以我们可以运用一种神奇的方法。

我们不断将两个不同的数字删去,最后剩下的数肯定相同的,它就是众数。

为什么呢?假设最坏的情况——都是众数与其它数一起删去,但是这个众数出现次数超过了一半,所以众数不可能全部被消去,剩下的数就是众数。如果非众数与非众数相消去,众数剩下的会更多,会更优。

这好像叫摩尔投票法

代码

#include<bits/stdc++.h>
using namespace std;int n, a, b, t;int main(){scanf( "%d", &n );scanf( "%d", &a ); b = 1;for ( int i = 2; i <= n; ++i ){scanf( "%d", &t );if ( t == a ) b++;else if ( b ) b--;else a = t, b = 1;}printf( "%d\n", a );return 0;
}

拓展

摩尔投票算法可以拓展到 出现次数超过1/3,甚至1/k的情况。
只要把一次消掉2个数改成消掉k个数就可以了。

转载于:https://www.cnblogs.com/louhancheng/p/10265712.html

「洛谷P2397」 yyy loves Maths VI (mode) 解题报告相关推荐

  1. [洛谷2397]yyy loves Maths VI

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

  2. 洛谷P2397 yyy loves Maths VI (mode) 摩尔投票

    求众数的一种方法 不需要内存,排序 每次记录上次加的值以及个数,相等个数+1,不相等就-1 因为众数大于一半 最坏的情况也就是拿一个众数取走一个非众数 最后的结果肯定就是众数 //#pragma co ...

  3. 洛谷乐多赛 yyy loves Maths VI (mode)

    题目描述 他让redbag找众数 他还特意表示,这个众数出现次数超过了一半 一共n个数,而且保证有 n<=2000000 而且每个数<2^31-1 时间限制 1s 空间限制 3.5M(你没 ...

  4. 「洛谷P1343」地震逃生 解题报告

    P1343 地震逃生 题目描述 汶川地震发生时,四川XX中学正在上课,一看地震发生,老师们立刻带领x名学生逃跑,整个学校可以抽象地看成一个有向图,图中有n个点,m条边.1号点为教室,n号点为安全地带, ...

  5. 「洛谷2495」「BZOJ3052」「SDOI2001」消耗战【虚树+树形动态规划】

    题目大意 给你\(k\)个点,让这一些点和一号节点断开,删去某一些边,求最小的删去边权之和. 做题的心路历程 做了\(HG\)昨天的模拟赛,深深感觉到了窝的菜,所以为了\(A\)掉T1这一道毒瘤,窝就 ...

  6. 「洛谷P3469」[POI2008]BLO-Blockade 解题报告

    P3469[POI2008]LO-Blockade 题意翻译 在Byteotia有n个城镇. 一些城镇之间由无向边连接. 在城镇外没有十字路口,尽管可能有桥,隧道或者高架公路(反正不考虑这些).每两个 ...

  7. 「洛谷 3768」简单的数学题

    传送门 problem 给定 nnn 和 ppp,求: ∑i=1n∑j=1nijgcd⁡(i,j)\sum_{i=1}^n\sum_{j=1}^nij\gcd(i,j)i=1∑n​j=1∑n​ijgc ...

  8. 「洛谷 P5043」:树同构【树哈希】

    P5043 [模板]树同构([BJOI2015]树的同构 题目描述 树是一种很常见的数据结构. 我们把NNN个点,N−1N−1N−1条边的连通无向图称为树. 若将某个点作为根,从根开始遍历,则其它的点 ...

  9. 洛谷 P1344 [USACO4.4]追查坏牛奶Pollutant Control 解题报告

    P1344 [USACO4.4]追查坏牛奶Pollutant Control 题目描述 你第一天接手三鹿牛奶公司就发生了一件倒霉的事情:公司不小心发送了一批有三聚氰胺的牛奶.很不幸,你发现这件事的时候 ...

最新文章

  1. 单片AT89C2051 + SD卡 + 3310LCD = 音乐播放器
  2. Beta阶段项目总结
  3. 找到两个字符串的公共字符,并按照其中一个的排序
  4. 批量提取 caffe 特征 (python, C++, Matlab)(待续)
  5. server端推送消息机制
  6. 微信接口开发-初级体验
  7. linux的驱动开发——字符设备驱动
  8. 怀旧服最新服务器塞卡尔,魔兽世界怀旧服:10个至今未开门的服务器!圣光服进度刚到20%!...
  9. oracle 免费 工具下载,免费的Oracle客户端工具(Oracle SQL Handler )
  10. 中国内裤衬里行业市场供需与战略研究报告
  11. office visio 替代_10 个 Linux 中最好的 Visio 替代品
  12. 实对称矩阵的特征值一定为实数证明
  13. python数据分析收获与心得体会_初次数据分析--我的心得体会
  14. java resourcebundle_Java中使用ResourceBundle访问资源文件(properties文件) | 学步园
  15. sqlserver tvps java_中毒了,请高手看一下诊断报告。
  16. 苹果呼叫转移设置不了_0广告,支持苹果,甜美小姐姐or磁性小哥哥做助理!
  17. crx插件转换火狐插件_我的Firefox插件
  18. 做360度评估引发员工不满?
  19. Phython画星空(较复杂)
  20. VScode 淡绿色界面

热门文章

  1. Linux安装MYSQL5.7教程(一次成功)
  2. 蓝桥杯BASIC-28 基础练习 Huffuman树
  3. perl 判断不包含某字符串
  4. java 用户、角色、权限数据库设计
  5. 【C++】 11_新型的类型转换
  6. FFmpeg AVFMT_NOFILE宏定义剖析
  7. mysql 可视化界面操作指令
  8. ionic2+angular2中踩的那些坑
  9. 新手该学习Python2.x版本还是3.x版本
  10. vc mscomm串口通信使用了CButtonST按钮类软件分析