第 Z 小
題目連結
超討厭,一直RE,結果是卡在沒有開long long,哭啊
這一題是值域分塊,一樣是根據值域每K個分成一塊,去維護每一大塊的數字數量總和,這樣在查詢(query)的時候花 $O(C/K)$ 找到相應大塊(C為值域),再花 $O(K)$ 的時間掃過小塊,而加值減值都是$O(1)$可以處理
複雜度:$O(K+\frac{C}{K})$ 取 K=$\sqrt{C}$ 有最小值:$O(Q\sqrt{C})$
1 |
|
題目連結
超討厭,一直RE,結果是卡在沒有開long long,哭啊
這一題是值域分塊,一樣是根據值域每K個分成一塊,去維護每一大塊的數字數量總和,這樣在查詢(query)的時候花 $O(C/K)$ 找到相應大塊(C為值域),再花 $O(K)$ 的時間掃過小塊,而加值減值都是$O(1)$可以處理
複雜度:$O(K+\frac{C}{K})$ 取 K=$\sqrt{C}$ 有最小值:$O(Q\sqrt{C})$
1 | #include <bits/stdc++.h> |