http://www.lydsy.com/JudgeOnline/problem.php?id=2456 (题目链接) 只看了一眼,直觉便告诉我这是水题.于是跟某码农打赌说10分钟做出来叫爸爸,结果输了... 题意 给你一个n个数的数列,其中某个数出现了超过n div 2次即众数,请你找出那个数.空间限制1mb. solution 此题乃鬼题一道,鉴定完毕. 题目要求求众数,而众数x在整个数列中出现了超过n div 2次,那么我们可以发现,整个数列中众数x的个数一定超过n div 2次,也就是说…
以后把题解放在前面,估计没人看题解先看题... 内存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++;…
有趣的题目 空间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…