BZOJ 2456 mode 思維 卡記憶體

2021-08-14 13:42:57 字數 414 閱讀 6500

傳送門

// 題意: 就是找出n個數中出現了超過ceil(n/2)的那個數.

// 思維: 其實一看是乙個很簡單的題目, 但是我們可以注意到它的記憶體只有1m, 變數定義多了都會mle, 更不要說開陣列之類的, 所以我們必須在o(n)的時復, 和o(1)的空復之內解決這個問題. 所以就有乙個想法就是碰碰法, 因為最後我們求的那個數一定出現了n/2以上的次數, 所以我們每次累加乙個數的時候如果和前面相等讓計數器++, 否則就–, 當計數器等於0的時候, 將ans 重新更新為新的那個數, 那麼最後輸出這個ans即可,

(連cin, cout都別用, 比scanf佔的記憶體多)

ac code

void solve()

printf("%d\n", tmp);

}

BZOJ2456 mode,卡記憶體

傳送門 寫在前面 曾經在codevs某次月賽中出現過,被godder秒了 思路 1mb的記憶體,n 500000注定這個題不能開陣列 甚至不能開萬能庫 但是可以用乙個比較特別的思路,就是把第一次讀入的數記為眾數,並記錄tot,即出現次數,如果讀入的數和它不同就tot 相同就tot 當tot 0時就對...

bzoj 2456 mode 思維題 好題

題目描述 給你乙個 n 個數的數列,其中某個數出現了超過 n div 2 次即眾數,請你找出那個數。空間大小 1mb 題解 顯然,我們是不能開任何陣列的,此題專卡空間。然而我們要求的東西也十分簡單,就是出現次數最多的數。出現次數最多,即代表著序列中沒有數比答案數更多。想象一下如果眾數和其他的數字一一...

bzoj 2456 mode 思維題 好題

題目描述 給你乙個 n 個數的數列,其中某個數出現了超過 n div 2 次即眾數,請你找出那個數。空間大小 1mb 題解 顯然,我們是不能開任何陣列的,此題專卡空間。然而我們要求的東西也十分簡單,就是出現次數最多的數。出現次數最多,即代表著序列中沒有數比答案數更多。想象一下如果眾數和其他的數字一一...