CF 1175E 經典題面目 多詢問區間貪心

2022-05-07 22:00:10 字數 615 閱讀 3841

給n個區間 q個詢問

每個詢問 給乙個區間 [s,t] 問覆蓋該區間至少需要多少個區間

考慮乙個詢問的時候 我們肯定在左端點<=s的區間裡面選右端點最大的

在繼續這樣的貪心 但是這樣的複雜度是nq的

考慮倍增優化

f[i][j] 表示以i為左端點 跳 2^(j-1) 可以到達的點

注意預處理的細節

這樣單次詢問複雜度 為log

#includeusing namespace std;

const int n = 5e5+100;

const int m = 5e5;

int f[n][22];

int main()

for(int i = 1; i <= m; i++) f[i][0]=max(f[i-1][0],f[i][0]);

for(int j = 1; j <= 20; j++)

for(int i = 0; i <= m; i++)

f[i][j]=f[f[i][j-1]][j-1];

for(int i = 1; i <= m; i++)else

} return 0;

}

題解 CF1175C 二分 貪心

題目鏈結 考慮二分答案,判定條件等價於存在乙個 x 滿足存在 ge k 個位置滿足 a i x le mid 考慮固定 x 那麼要統計的即在 x mid,x mid 這個範圍內的 a i 的個數。對於這個問題有兩個解決辦法 直接做我們發現很難,正難則反。因為覆蓋的範圍是一段區間,所以考慮列舉區間判定...

CF刷題總結 CF706E鍊錶

這題目應該要秒做出來的。首先看到二維,又沒什麼思路就直接降維 考慮一維的情況,就是一段連續的和另一端連續的交換,最快的當然是鍊錶模擬了。所以考慮到二維中也不應該用陣列儲存,而是鍊錶表示。但是由於二維的話,不可能是簡單的鍊錶。所以考慮每乙個矩形和旁邊的關係。肯定就是四周的,但是只考慮單向,那就是2個方...

CF508E 貪心 搜尋 構造

題目大意 讓你構造乙個括號序列,括號匹配的方式類似於棧,給出從左數每個括號 到和它匹配的右括號的 最小和最大距離,讓你輸出乙個合法括號序列 看錯題了以為是二分圖,然後寫了搜尋 貪心發現如果距離往小了填,不會影響結果 括號必須套完整的括號,所以距離必須是2的整數倍 1 如果乙個括號匹配上了,那麼兩個括...