這兩天看了莫隊,對於莫隊算法感覺實現還是很簡單的,但是時間複雜度的理解好像網上的文章都沒有講的太明白(也可能是我理解能力有問題Orz);
莫隊的時間複雜度的貢獻主要來自於L,R指針的移動:
L跨塊轉移的次數O(sqrt(n)),跨塊轉移的總距離爲O(n);即不跨塊轉移的次數爲O(n-sqrt(n)),每次的查詢的複雜度是O(sqrt(n));
所以L的時間複雜度爲O(n)+O(n-sqrt(n))*O(sqrt(n))=O(n*sqrt(n));
R在每一塊內的轉移複雜度爲O(n);因爲在每塊內的元素的r是無序的;
一共有sqrt(n)塊;
所以R的時間複雜度爲O(n*sqrt(n));
所以總的時間複雜度爲O(n*sqrt(n));
本人蒟蒻,如果有什麼錯誤之處歡迎大佬批評指正,Orz~~~