首师大附中互测题:99999999海岛帝国后传:算法大会【D001】
【D001】99999999海岛帝国后传:算法大会【难度:D】
——————————————————————————————————————————————————————————————————————————————————————
【题目要求】
YSF经过百般思考后,决定召开一个“煽风点火”,来召集全世界优秀的计算机人士。算法大会只有一道题,是WXJ && LJX合力编写、研究出来的算法设计精品:(以下为YSF的发言稿)
大家还记得这样一道超水,水的不能再水的题吗?(当然不是A+B问题啦)题目如上。
总体说,就是高效实现。
保证有且只有一个数符合条件。
【输入输出及要求】如图(阅读者:真懒QAQ)
【其它要求】
运行时间限制:50ms
n<=10^10,享受痛苦吧!
【试题分析】50ms达到10^10我想问的是出题者你在逗我吗?通过度娘我发现这是一个著名的主元素问题,主要思想就是通过代码选出最有可能当选的人也就是候选人。既然如此可以得到这 样的一个结论:在元素数组中,删去不同的两个元素,数组的主元素保持不变。按照这样的思路,我们可以不断缩小问题的规模,最终使问题得解:
设置变量Seed用于存储当前候选元素,初始化为数组首元素a[0];
设置变量count用于控制候选元素,初始化为1;
从第二个元素a[1]开始遍历数组,并与Seed相比较:相同,则count加1,读入下一个元素;
不同,则count减1,读入下一个元素:相当于删去两个不同元素,缩小问题规模;如果count小于0则Seed不是主元素候选,读入下一个元素,count加1。
这样一次遍历之后,得到的Seed就是主元素的候选;但因为最终得到的Seed元素有可能是序列最末位的两个元素之一,所以还需要验证。我们再次遍历数组,得到Seed出现的次数,与总数的一半比较来验证。
总的来说这个方法的效率非常高可以达到比O(n)还好。所以,完美解决。哼(ˉ(∞)ˉ)唧
【代码】
#include <iostream>
using namespace std;int MajorityElement( int *a, int n)
{int k, i;int elem;k = 1;elem = a[0];for( i = 1; i <n; i++ ){if( a[i]==elem ) k++;else{k--;if( k == 0 ) { k = 1; elem = a[i]; }}}return elem;
}
int main(int argc, char* argv[])
{int n;cin>>n;int a[n];for(int i=1;i<n+1;i++) cin>>a[i];cout<<MajorityElement(a,sizeof(a)/sizeof(a[0]))<<endl;
}
转载于:https://www.cnblogs.com/lijiaxin-blog-cpp/p/5606218.html
首师大附中互测题:99999999海岛帝国后传:算法大会【D001】相关推荐
- 首师大附中互测题:50229234海岛帝国:独立之战【C002】
[C002]50229234海岛帝国:独立之战[难度C]------------------------------------------------------------------------ ...
- 首师大附中互测题:LJX的校园:入学典礼【C003】
[C003]LJX的校园:入学典礼[难度C]------------------------------------------------------------------------------ ...
- 首师大附中互测题:50136142WXY的坑爹百度地图【B006】(可以喝的超大桶水)
[B006]50136142WXY的坑爹百度地图[难度B]----------------------------------------------------------------------- ...
- 首师大附中OJ系统 0004 我们的社团
我们的社团 这里可以快速跳转: 试题要求 试题分析 试题代码 试题要求 难度级别:A: 运行时间限制:1000ms: 运行空间限制:256000KB: 代码长度限制:2000000B 试题描述 首师大 ...
- 首师大附中集训第二十天综合模测
正题 第一题:伟大的航线 穿越河流是危险的,有船的河流就更加危险,这反而激发了Noder挑战极限的热情.然而Noder是一个 理智的人,他会想办法避开那些真正的危险. 河流在东西方向有几个平行的航道. ...
- 首师大附中集训第十三天综合模测
正题 第一题:信仰圣光 精灵王国的每一名精灵都曾是圣光的信徒,在圣光的沐浴下歌颂祈福. 然而百年前的那场浩劫摧毁了 Bzeroth 大陆与神界的通道,同时将大陆打碎分散到了 不同的次元里. 百年后神界 ...
- 首师大附中集训第十一天:OI炼金术
正题 今天给我们上课的老师很有趣. 交给我们不只是一些题,还有一些题的入手方法,如何把题面转化为题解才是最重要的. OI选手经常遇到的痛点 看了题解之后:啊,好简单,我咋没想到呢? 这题我想出来了,但 ...
- 首师大附中集训第四天:杂
正题 今天讲的是一些杂题 一开始的是一些搜索. 1.长度为N的数列,已知N个前缀和以及N个后缀和共2N个数打乱后的结果,已知数列中每个数的范围是不超过500的整数,求原数列,存在多组时间求字典序最小的 ...
- 首师大附中OJ系统 0012 求滑动距离
求滑动距离 这里可以快速跳转: 试题要求 试题分析 试题代码 试题要求 难度级别:A: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 一架雪橇 ...
最新文章
- golang beego框架对运行异常的处理
- 蓝牙4.0BLE抓包(二) – 广播包解析
- scrapy-redis 分布式哔哩哔哩网站用户爬虫
- 五十个小技巧提高PHP执行效率
- sqoop导入hive时间格式问题解决方案
- 如何在CentOS 7上安装Kubernetes Docker群集
- WPF | 控制库| MultiSelectCombobox
- 集成电路先进制造技术进展与趋势
- 浪潮财务软件遇到问题
- photoshop照片尺寸
- ROS Navigation-----发布Odometry信息
- solr删除数据的4种方便快捷的方式
- Android仿微信语音录制和播放
- android es2 es3,Android模拟器和OpenGL ES3:EGL_BAD_CONFIG
- 如何用Matlab求不定积分
- 开机出现invalid boot.ini filebooting from c:\windows\ntdetect failed 修复方法
- 批量转换——颜色代码(16进制)与RGB
- win7系统没有诊断策略服务器,Win7提示诊断策略服务未运行无法诊断检查网络解决方法...
- simulink 报错Derivative of state ‘1‘ in block ..... at time 0.0 is not finite.
- 栈的存储——顺序存储与链式存储