【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】相关推荐

  1. 首师大附中互测题:50229234海岛帝国:独立之战【C002】

    [C002]50229234海岛帝国:独立之战[难度C]------------------------------------------------------------------------ ...

  2. 首师大附中互测题:LJX的校园:入学典礼【C003】

    [C003]LJX的校园:入学典礼[难度C]------------------------------------------------------------------------------ ...

  3. 首师大附中互测题:50136142WXY的坑爹百度地图【B006】(可以喝的超大桶水)

    [B006]50136142WXY的坑爹百度地图[难度B]----------------------------------------------------------------------- ...

  4. 首师大附中OJ系统 0004 我们的社团

    我们的社团 这里可以快速跳转: 试题要求 试题分析 试题代码 试题要求 难度级别:A: 运行时间限制:1000ms: 运行空间限制:256000KB: 代码长度限制:2000000B 试题描述 首师大 ...

  5. 首师大附中集训第二十天综合模测

    正题 第一题:伟大的航线 穿越河流是危险的,有船的河流就更加危险,这反而激发了Noder挑战极限的热情.然而Noder是一个 理智的人,他会想办法避开那些真正的危险. 河流在东西方向有几个平行的航道. ...

  6. 首师大附中集训第十三天综合模测

    正题 第一题:信仰圣光 精灵王国的每一名精灵都曾是圣光的信徒,在圣光的沐浴下歌颂祈福. 然而百年前的那场浩劫摧毁了 Bzeroth 大陆与神界的通道,同时将大陆打碎分散到了 不同的次元里. 百年后神界 ...

  7. 首师大附中集训第十一天:OI炼金术

    正题 今天给我们上课的老师很有趣. 交给我们不只是一些题,还有一些题的入手方法,如何把题面转化为题解才是最重要的. OI选手经常遇到的痛点 看了题解之后:啊,好简单,我咋没想到呢? 这题我想出来了,但 ...

  8. 首师大附中集训第四天:杂

    正题 今天讲的是一些杂题 一开始的是一些搜索. 1.长度为N的数列,已知N个前缀和以及N个后缀和共2N个数打乱后的结果,已知数列中每个数的范围是不超过500的整数,求原数列,存在多组时间求字典序最小的 ...

  9. 首师大附中OJ系统 0012 求滑动距离

    求滑动距离 这里可以快速跳转: 试题要求 试题分析 试题代码 试题要求 难度级别:A: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 一架雪橇 ...

最新文章

  1. golang beego框架对运行异常的处理
  2. 蓝牙4.0BLE抓包(二) – 广播包解析
  3. scrapy-redis 分布式哔哩哔哩网站用户爬虫
  4. 五十个小技巧提高PHP执行效率
  5. sqoop导入hive时间格式问题解决方案
  6. 如何在CentOS 7上安装Kubernetes Docker群集
  7. WPF | 控制库| MultiSelectCombobox
  8. 集成电路先进制造技术进展与趋势
  9. 浪潮财务软件遇到问题
  10. photoshop照片尺寸
  11. ROS Navigation-----发布Odometry信息
  12. solr删除数据的4种方便快捷的方式
  13. Android仿微信语音录制和播放
  14. android es2 es3,Android模拟器和OpenGL ES3:EGL_BAD_CONFIG
  15. 如何用Matlab求不定积分
  16. 开机出现invalid boot.ini filebooting from c:\windows\ntdetect failed 修复方法
  17. 批量转换——颜色代码(16进制)与RGB
  18. win7系统没有诊断策略服务器,Win7提示诊断策略服务未运行无法诊断检查网络解决方法...
  19. simulink 报错Derivative of state ‘1‘ in block ..... at time 0.0 is not finite.
  20. 栈的存储——顺序存储与链式存储

热门文章

  1. java记事本教程_Java实战_手把手编写记事本
  2. 相机照片删除了怎么恢复?60%的人都用这三步解决了
  3. 财务投资者和战略投资者有什么分别
  4. 阿里巴巴集团--软件测试--《社招、校招jd、公司具体介绍,校园招聘公告,应届生招聘流程,技术培训,薪资福利》整理
  5. 我是如何一步步把客户的两台服务器给弄崩的
  6. 两步开发.NET Core剪裁器,并且开源它
  7. 详解程序员驻场开发服务的具体流程
  8. 蓝牙技术|伦茨科技带你了解蓝牙智能门禁
  9. HTML+CSS环境保护静态网页设计 (学生网页设计作业源码)
  10. oracle-表创建