P5749 [IOI 2019] 排列鞋子 考慮最樸素的貪心,從某一側的鞋子開始,不停向左交換當前鞋子直至匹配成功,成功後在元素組中刪去這兩個鞋子,因為交換相鄰兩數的操作不會影響元素的相對位置。 於是我們得到了一個 \(O(n^2)\) 的做法。注意到特殊性質中的鞋子大小均相等,想到對於相同大小的鞋子開 vector 記錄他們在原數組中的位置,每次在 ve
Noip 模擬賽。 Link T1 考慮不進位的時候可以 \(O(n)\) 求出總和,即 \(\sum_{i=1}^{n}{f(a[i])}\)。考慮存在進位的話答案會有什麼變化,顯然每當有一次進位,總和會減少 \(9\)。 問題就轉化為了如何快速求出進位的次數,不妨枚舉那一位產生了進位。具體來説,枚舉 \(10^i\),對於每個數,它大於 \(10^i\) 的
線段樹(Segment Tree)是常用的維護區間信息的數據結構,它可以在 O(logn) 的時間複雜度下實現單點修改、區間修改、區間查詢(區間求和、區間最大值或區間最小值)等操作,常用來解決 RMQ 問題。 RMQ(Range Minimum/Maximum Query) 問題是指:對於長度為 n 的數列 A,回答若干詢問 RMQ(A, i, j) 其中 i, j = n,返回數列 A 中下