這幾天之所以沒怎麼寫部落格主要是因為一直在看饒齊的部落格
再就是加上rmq的乙個簡單模板
//d[i][j]表示的是從i開始長度為2^j次方的最小值
void rmq_init()
{for(int i=1; i<=n; i++) d[i][0]=sum[i];
for(int j=1; (1<
rmq演算法,是乙個快速求區間最值的離線演算法,預處理時間複雜度o(n*log(n)),查詢o(1),所以是乙個很快速的演算法,當然這個問題用線段樹同樣能夠解決。
問題:給出n個數ai,讓你快速查詢某個區間的的最值。
演算法分類:dp+位運算
演算法分析:這個演算法就是基於dp和位運算子,我們用dp【i】【j】表示從第 i 位開始,到第 i + 2^j -1 位的最大值或者最小值。
那麼我求dp【i】【j】的時候可以把它分成兩部分,第一部分從 i 到 i + 2 ^( j-1 ) - 1 ,第二部分從 i + 2 ^( j-1 ) 到 i + 2^j - 1 次方,其實我們知道二進位制數後乙個是前乙個的二倍,那麼可以把 i --- i + 2^j 這個區間 通過2^(j-1) 分成相等的兩部分, 那麼轉移方程很容易就寫出來了。
轉移方程:mm [ i ] [ j ] = max ( mm [ i ] [ j - 1 ] , mm [ i + ( 1 << ( j - 1 ) ) ] [ j - 1 ] );
**就不在這裡給出了
訓練日記 20161024
初賽好像不會掛了,好開心!版權原因,不上傳題目。題意 求1 n n 1000 的排列中逆序對恰好為 k 個的排列數目。多測。題解 f i j 表示前 i 個數,逆序對個數恰好為 j的排列個數,易得轉移方程f i j i 1k 0f i 1 j k 用字首和優化可使複雜度降為o n2 題意 對於乙個長...
訓練日記 20170324
長久不更新部落格了。期間經歷了恰好被ag線踩的wc,經歷了漫長痛苦的小高考準備。現在終於可以重整旗鼓,向省選進發!幾個月來,唯一不變的是我仍然是個超級蒟蒻 版權原因,不上傳題目。題意 最小樹形圖 去年就接觸 聽說 過的演算法,一直沒有真正寫過。因為各種奇怪的細節錯誤,調了好幾個小時 比如找環時沒有判...
訓練日記 20170328
今天的題目似乎很水 好多人都提前ak離場了,於是提前一小時收題。但是我還是各種不會。思維江化?話說,聽到一句很有趣的話 山不在高,有林則徐 水不在深,有江 題意 給定一棵有n n 105 個節點的有根樹,編號互不重複。詢問有多少棵子樹內節點編號構成乙個連續區間。題解 水題,對於每個節點 i 記錄以該...