珍珠

最爱丁珰發表於2024-03-09

這道題目本來是想去發現什麼性質然後進行區間運算的,但是題目的末尾其實提示你了,這是沒啥性質的,所以就不要從區間考慮了

我們直接考慮最後一步的時候是什麼情況

如果最後一步是\(0\)與前面經過一系列運算所得到的一個bit進行運算,那麼這次查詢的操作肯定是\(1\),因為\(0\)and任何數都為\(0\)

如果最後一步是\(1\)與前面經過一系列運算所得到的一個bit進行運算,那麼前面這個bit是\(0\),答案就是\(1\);bit是\(1\),答案就是\(0\)。也就是剛好取反

所以我們只用考慮維護每一個\(1\)前面(或者後面)一共有多少個連續的\(1\)即可

維護方法見這篇文章,均攤的時間複雜度真的很強