bzoj2456】的更多相关文章

http://www.lydsy.com/JudgeOnline/problem.php?id=2456 (题目链接) 只看了一眼,直觉便告诉我这是水题.于是跟某码农打赌说10分钟做出来叫爸爸,结果输了... 题意 给你一个n个数的数列,其中某个数出现了超过n div 2次即众数,请你找出那个数.空间限制1mb. solution 此题乃鬼题一道,鉴定完毕. 题目要求求众数,而众数x在整个数列中出现了超过n div 2次,那么我们可以发现,整个数列中众数x的个数一定超过n div 2次,也就是说…
Position: http://www.lydsy.com/JudgeOnline/problem.php?id=2456 List Bzoj2456 mode List Description Solution Code Description 给你一个n个数的数列,其中某个数出现了超过n div 2次即众数,请你找出那个数. Solution 众数出现的次数>=n/2+1,采用抵消的方法,如果当前数不等于之前记录的数给计数器-1 else +1,当计数器<=0时,可以update数. 证…
以后把题解放在前面,估计没人看题解先看题... 内存1M,4个int(其实对内存的概念十分模糊),众数即为出现次数最多的数,可以用抵消的思想(但是众数不是可以是一大坨么...) #include <cstdio> using namespace std; int now,n,a,t; int main() { scanf("%d",&n); ;i<=n;i++) { scanf("%d",&a); if (now==a) t++;…
Description 给你一个n个数的数列,其中某个数出现了超过n div 2次即众数,请你找出那个数. Input 第1行一个正整数n. 第2行n个正整数用空格隔开. Output 一行一个正整数表示那个众数. Sample Input 5 3 2 3 1 3 Sample Output 3 HINT 100%的数据,n<=500000,数列中每个数<=maxlongint. 正解:... 解题报告: 首先题目要求的是出现次数大于n/2的数,显然这个数的出现次数比别的数都要多,那么我们可以…
有趣的题目 空间1mb,所以开数组的算法就不要想了(我一开始没看到……) 仔细读题,然后发现这里他限定众数为出现超过n div 2次 也就是说,这个数可以对应每一个不相同的数消掉,最终还剩下这个数 也就是说,我们遍历,遇到不相同的就两两抵消,最终剩下的一定是ans 得解, var n,i,s,ans,x:longint; begin   readln(n);   s:=;   to n do   begin     read(x);     ) then     begin       inc(…
不能把数存下来. 于是来打擂台,如果新数和他不相等,cnt--,否则cnt++.如果cnt<=0了,那个新数就来把它顶掉,然后把cnt重置成1 最后在台上的就是那个次数大于N/2的众数 (连<bits/stdc++.h>都不能include..直接MLE) #include<cstdio> using namespace std; int main(){ int N;scanf("%d",&N); ,cnt=; ;i<=N;i++){ int…
http://www.lydsy.com/JudgeOnline/problem.php?id=2456 任意删除序列中两个不同的数,众数仍然是众数 不停的删,剩下的最后的数一定是众数 具体实现: 记录一个当前数和出现次数 如果下一个数和当前数不相等,出现次数-1 当出现次数变为0时,当前数换为下一个数 #include<cstdio> int main() { ,x,last; scanf("%d",&n); while(n--) { scanf("%d…
P2397 yyy loves Maths VI (mode) 神奇的摩尔投票法(大雾) 保证众数个数大于一半. 两两相消,剩下的那个必定是众数. 我们只要开2个变量,一个存个数,一个存值即可. (luogu的数据卡快读???) luogu P2397 code: #include<cstdio> using namespace std; int cnt,id,n,q; int main(){ scanf("%d",&n); ;i<=n;++i){ scanf…
题解:http://www.tuicool.com/articles/BfQBzif #include<cstdio> using namespace std; int n,x,ans,tot; int main() { scanf("%d",&n); ;n--) { scanf("%d",&x); ;} else if(x==ans) tot++; else tot--; } printf("%d\n",ans);…
传送门 看到这个题的第一反应是离散化+线段树乱搞.. eeeeeeeeeeee感觉数据结构学傻了,其实直接存下来,sort一遍,n/2的位置的就是答案 当然前提是空间够的话 1m的空间连数组都开不下 于是有了一个很巧妙的思路,吼吧,直接给链接 http://blog.csdn.net/suncongbo/article/details/76862425 #include <cstdio> int n, top, num, now; int main() { scanf("%d&quo…