BZOJ2456 mode,卡記憶體

2021-07-10 14:49:36 字數 417 閱讀 2871

傳送門

寫在前面:曾經在codevs某次月賽中出現過,被godder秒了……

思路:1mb的記憶體,n<=500000注定這個題不能開陣列(甚至不能開萬能庫(╯‵□′)╯︵┻━┻),但是可以用乙個比較特別的思路,就是把第一次讀入的數記為眾數,並記錄tot,即出現次數,如果讀入的數和它不同就tot–,相同就tot++,當tot=0時就對重新對眾數重新賦值,可以理解為不同的數相抵消,眾數由於出現次數大於n/2的性質使得留到最後的數一定是眾數

注意:思路中已經說了……

**:

#include

using

namespace

std;

int n,x,y,tot;

main()

}printf("%d",x);

}

水 卡記憶體 bzoj 2456 mode

time limit 1 sec memory limit 1 mb submit 2157 solved 910description 給你乙個n個數的數列,其中某個數出現了超過n div 2次即眾數,請你找出那個數。input 第1行乙個正整數n。第2行n個正整數用空格隔開。output 一行乙...

BZOJ 2456 mode 思維 卡記憶體

傳送門 題意 就是找出n個數中出現了超過ceil n 2 的那個數.思維 其實一看是乙個很簡單的題目,但是我們可以注意到它的記憶體只有1m,變數定義多了都會mle,更不要說開陣列之類的,所以我們必須在o n 的時復,和o 1 的空復之內解決這個問題.所以就有乙個想法就是碰碰法,因為最後我們求的那個數...

BZOJ 2456 mode(巧取眾數)

time limit 1 sec memory limit 1 mb submit 5043 solved 2110 submit status discuss 給你乙個n個數的數列,其中某個數出現了超過n div 2次即眾數,請你找出那個數。第1行乙個正整數n。第2行n個正整數用空格隔開。一行乙個...