想問一下關於 ZJ-c710 這題的離線處理,題目是標準RMQ類型
一般莫隊算法是處理離線問題的代表,ZJ-b417的區間眾數是經典
但是這題要取餘數該怎麼下手呢?應該不可能將各個數字計算個數...
雖然題目的標籤處提示是期望空間複雜度為 O(N+M)。
N 應該原始數據,M 代表所有的查詢需要儲存達到符合離線的作法,
但具體的方式就完全卡住。
解法:
( 離線處理=>莫隊 ) 89%(11% TLE,卡在當除數很小但是暴力法查詢倍數導致的TLE)
根據theshold決定採用莫隊還是前綴和計算
訂一個 threshold 來決定當除數小於時透過『前綴和』計算區間內可以被該除數整除
的個數,因為前綴和的計算方式整體記憶體空間不能過大(√NxN太大,所以才把
threshold調降為50),若大於等於則採用莫隊算法處理,
這時即便是暴力查詢倍數時間成本也是K√N,K=√N/threshold。