分析:剛開始以為預處理+並查集呢?怎麼也沒想通,看了題解理解了一會。。。
由於k和n都很大,預處理最大時間nlg,查詢最大時間lgn。
lg級別的查詢,線段樹?怎麼查呢。。。倍增是個好東西,倍增+st表,有點區間dp的意思。
首先你應該知道什麼是倍增?什麼是st表?其次怎樣狀態轉移的?
倍增法 :7 = 2^2 + 2^1 + 2^0;(我的理解);
st表:nlg離線預處理,o(1)離線查詢,類似於線段樹,只不過不能動態更新點或區間;
(如下圖):n=2^a+2^b+2^c….(a > b > c…),離線處理時,用st表st[j][i] :以j為起點,經過2^i次,到達終點st[j][i];
狀態轉移方程:st[j][i] = st[st[j][i - 1]][i - 1];
牛客練習賽14 B 區間的連續段 倍增打表
給你乙個長為n的序列a和乙個常數k 有m次詢問,每次查詢乙個區間 l,r 內所有數最少分成多少個連續段,使得每段的和都 k 如果這一次查詢無解,輸出 chtholly 第一行三個數n,m,k 第二行n個數表示這個序列a 之後m行,每行給出兩個數l r表示一次詢問輸出m行,每行乙個整數,表示答案 題解...
牛客練習賽25 最長區間
其中表示left len right len可以用乙個len i 表示 len i 表示包括i的在i之前的最長遞增序列 用len陣列可以很方便得記錄到從x往左的left len等於多少 然後向由可以推出right len cnt i 計算每乙個長度i的序列有多少個 其中 乙個i的子長度的序列也會記錄...
牛客練習賽9 B 珂朵莉的值域連續段
一定要注意題目中的 連續 即只需要記錄子樹中的三個要素 最小值min 最大值max和節點個數size 做個dfs遍歷一遍樹,每棵樹的節點size等於本身1 全部子樹的size,max min也是本身與全部子樹的max min比較 include include include include inc...