通常來說,複雜度
單調性 \(\geq\) 遞增
遞增本身也是單調性的一種展現
不過他有更多的好性質,ex: 可以用雙指針維護
如果題目跟順序無關的話可以考慮\(sort\)
如果是前綴和有單調性的話可能就考慮離線or線段樹
離散化
\(設T(N)為執行一向演算法g的複雜度、C為值域\)
\(O(T(N) \times lg C )\)
通常可以使用\(lower\_ bound\)之類的函式去完成
\(O(lg C \times T(N) )\)
透過搜尋值域丟進演算法\(T\)裡面
\(O(T(N) \times(lg C \times N) )\)
只是提供一個想法,我好像還沒有遇過
int m = (l+r)/2;
int m = (l+r)>>1;
常數優化
int m = (l+r)>>1;
int m = l + ((r-l)>>1);
可以避免爆值域( 如果你不想用 __int128 的話 )
int m = (l+r)>>1;
int m = (l+r+1)>>1;
主要是體現在\(r-l = 2\)的時候