【BZOJ】2456: mode

时间:2023-03-08 18:11:12

http://www.lydsy.com/JudgeOnline/problem.php?id=2456

题意:给一个$n<=500000$的数列,求出现次数超过$\lfloor \frac{n}{2} \rfloor$的数

#include <set>
#include <cstdio> int main() {
int n, now, tot=1, i, t;
scanf("%d%d", &n, &now);
for(i=1; i<n; ++i) { scanf("%d", &t); if(t==now) ++tot; else { if(!tot) now=t, tot=1; else --tot; } }
printf("%d\n", now);
return 0;
}

  

= =我滴神啊》。。这题好神...完全没有抓住“出现次数超过n/2”这个条件啊QAQ

如果出现次数超过n/2,那么个数一定大于其余所有数字的个数....于是一一抵消!出现一个抵消一个!