$[ BZOJ 2456 ] Mode$
阿新 • • 發佈:2018-09-09
pan ios mat ref esp turn line math bzoj
\(\\\)
\(Description\)
一個長度為\(N\)的數列,求其眾數。
- \(N\in [1,5\times 10^5]\),數字大小\(\le maxlongint\),空間限制\(1MB\)
\(\\\)
\(Solution\)
我是智障您們都太神了
空間大點離散化或者\(map\)就水過去了
註意到眾數出現次數\(> \frac{N}{2}\),於是神仙做法是令不同的數字互相抵消,那麽最後剩下的數一定是眾數,按順序讀進來開個計數器就行了。
漲姿勢原來調用像iostram的一些頭文件還需要空間
\(\\\)
\(Code\)
#include<cstdio> using namespace std; int main(){ int n,m,now,cnt; scanf("%d",&n); while(n--){ scanf("%d",&m); (m==now)?++cnt:--cnt; if(cnt<=0) cnt=1,now=m; } printf("%d\n",now); return 0; }
$[\ BZOJ\ 2456\ ]\ Mode$