1002
樹上每個點都有乙個點權w(w<=2^16),點數n<=2^16
已知dp方程:dp[i] = max
將w分成前8位和後8位,設w[i]前8位和後8位為x和y,w[j]前8位和後8位為a和b,如圖所示:
前8位 後8位
w[i]: x y
w[j]: a b
方程形式變為:
dp[i] = max
維護ds[a][y] = max,則dp[i] = max
ds[a][y]的維護通過列舉y來實現;dp[i]的維護通過列舉a來實現
總複雜度:o(2^24)
1004
給定兩個陣列a和b,以及兩種操作:
1)將a[l..r]同時變成乙個數x
2)統計[l..r]中a[i]>=b[i]的數目
線段樹:維護num[rt],結點rt的答案;cov[rt],節點rt被覆蓋的數字大於等於該節點中數字的個數;c[dep][x]:線段樹深度為dep時,第x小的數字;cl[dep][x]:線段樹深度為dep時,第x小的數字在左兒子結點中不小於的數字個數;cr[dep][x]:線段樹深度為dep時,第x小的數字在右兒子結點中不小於的數字個數
c陣列歸併排序的方式實現,cl和cr在c的基礎上需要去重實現。
num和cov就是普通的線段樹實現
1006
給定一張無向圖,刪除每個節點判斷新的圖的連通性。
先求出dfs搜尋樹,然後判斷每個點是否為割點。如果不是割點,那麼不改變連通性;如果是割點,那麼判斷該節點的兒子結點是否與「上層」結點連通。用tarjan演算法即可實現。
HDU 多校聯合第二場
不是在為這次比賽找藉口。我真的想吐嘈一下這道題。尼嘛!明明是狀態dp!非得搞得資料隨便貪心都能過!過你妹啊!埋頭想dp的時候,大約開始十幾分鐘,重新整理了一下。我了個去!快上百了!純屬噁心人嗎?吐嘈完畢 狀態dp 1 n 20,最多20位,完全可以位壓縮。預處理一下hp sum i i 010111...
多校第二場 E MAZE
首先,這題的列數非常的小,很像矩陣快速冪加速dp。這題實際上也是維護了一段區間矩陣乘積的結果。查詢 o 1 修改 o logn k 3 這裡有乙個需要注意的點是左乘和右乘的區別。矩陣快速冪還是 1,n n,n 這種形式比較好。include define lc l,mid,x 1 define rc...
牛客多校第二場 J farm
輸入描述 the first line of input contains 3 integers n,m,t n m 1000000,t 1000000 for the next n lines,each line contains m integers in range 1,n m denotin...