首师大附中互测题: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;
}
首师大附中互测题:99999999海岛帝国后传:算法大会【D001】的更多相关文章
- 首师大附中互测题:50229234海岛帝国:独立之战【C002】
[C002]50229234海岛帝国:独立之战[难度C]———————————————————————————————————————————————————————————————————————— ...
- 首师大附中互测题:50136142WXY的坑爹百度地图【B006】(可以喝的超大桶水)
[B006]50136142WXY的坑爹百度地图[难度B]——————————————————————————————————————————————————————————————————————— ...
- 首师大附中互测题:LJX的校园:入学典礼【C003】
[C003]LJX的校园:入学典礼[难度C]—————————————————————————————————————————————————————————————————————————————— ...
- 【2018集训队互测】【XSY3372】取石子
题目来源:2018集训队互测 Round17 T2 题意: 题解: 显然我是不可能想出来的……但是觉得这题题解太神了就来搬(chao)一下……Orzpyz! 显然不会无解…… 为了方便计算石子个数,在 ...
- 洛谷 P4463 - [集训队互测 2012] calc(多项式)
题面传送门 & 加强版题面传送门 竟然能独立做出 jxd 互测的题(及其加强版),震撼震撼(((故写题解以祭之 首先由于 \(a_1,a_2,\cdots,a_n\) 互不相同,故可以考虑求出 ...
- 【loj2461】【2018集训队互测Day 1】完美的队列
#2461. 「2018 集训队互测 Day 1」完美的队列 传送门: https://loj.ac/problem/2461 题解: 直接做可能一次操作加入队列同时会弹出很多数字,无法维护:一个操作 ...
- 【CH 弱省互测 Round #1 】OVOO(可持久化可并堆)
Description 给定一颗 \(n\) 个点的树,带边权. 你可以选出一个包含 \(1\) 顶点的连通块,连通块的权值为连接块内这些点的边权和. 求一种选法,使得这个选法的权值是所有选法中第 \ ...
- 首师大附中科创教育平台 我的刷题记录 0325 50212228海岛帝国:LYF的太空运输站
今天给大家献上“D”级题:50212228海岛帝国:LYF的太空运输站!! 试题编号:0325 50212228海岛帝国:LYF的太空运输站 难度级别:D: 运行时间限制:40ms: 运行 ...
- 首师大附中科创教育平台 我的刷题记录 3120 LJX的校园:入学典礼
今天给大家献上"C"级题:LJX的校园:入学典礼!! 试题编号:3120 LJX的校园:入学典礼 难度级别:C: 运行时间限制:45ms: 运行空间限制:256000K ...
随机推荐
- <<< 编程类开发工具
Java.开发工具 java运行环境JDK下载 1.6 →下载JDK1.6 1.7 →下载JDK1.7 简介:著名的跨平台开源集成开发环境(IDE).最初主要用来Java语言开发,Eclipse的本身 ...
- JS事件-事件处理程序-笔记总结ing...
html事件处理程序:缺点-行为与结构耦合<input type="button" onclick = "diaoyong();"> dom0级事件 ...
- .Net 中的反射(动态创建类型实例) - Part.4
动态创建对象 在前面节中,我们先了解了反射,然后利用反射查看了类型信息,并学习了如何创建自定义特性,并利用反射来遍历它.可以说,前面三节,我们学习的都是反射是什么,在接下来的章节中,我们将学习反射可以 ...
- MySQL 调优/优化的 100 个建议
MySQL 调优/优化的 100 个建议 MySQL是一个强大的开源数据库.随着MySQL上的应用越来越多,MySQL逐渐遇到了瓶颈.这里提供 101 条优化 MySQL 的建议.有些技巧适合特定 ...
- 深入理解IoC/DI
------------------------------------------------------------------------ 理解IoC/DI 1.控制反转 --> 谁控制谁 ...
- iOS中常用属性的关键字的使用说明
属性关键字的作用 现在我们iOS开发中,基本都是使用ARC(自动引用计数)技术,来编写我们的代码.因此在属性property中我们经常使用的关键字有strong,weak,assign,copy,no ...
- H5播放器
<!DOCTYPE html> <html> <body> <div style="text-align:center"> ...
- 修改mysql默认字符编码出现的Job failed to start解决方法
5.5以后的版本对字符编码方式修改的办法,原来在[mysqld]下的修改已经发生了变化,正确方式如下: [mysqld]下添加的应该为: character-set-server=utf8 colla ...
- 进阶系列五【绝对干货】----Git教程
一.介绍 1.1Git是什么? Git是目前世界上最先进的分布式版本控制系统.什么是版本控制系统?请自行百度. 1.2Git与SVN对比有什么特点? SVN是集中式版本控制系统.版本库是集中放在中央服 ...
- PYTHON isinstance语法
def obj_len(arg): #isinstance(),判断是否是某一类 if isinstance(arg,str) or (isinstance(arg,list)) or (isinst ...