t1:
線性篩出前1e7個質數,暴力求出函式值。
由於輸入可以當作隨機資料處理,所以指標的變化是常數級別的,可以用指標維護位置。
開乙個桶,維護每個數的數量,開兩個指標變數,維護當前位置是哪個數和是第幾個。
然後就可以分類討論了,若刪除和插入分別在兩側,指標就要移動。
等於的情況可以當作大於的情況,因為第二個指標是自下而上統計的。
時間複雜度$o(n)$。
t2:假的博弈,每次一定取最大的。
可以動態維護最大值來做。
但是每次只加入乙個數,也就是說如果新加入的數比當前集合的最大值更大,一定馬上被取走。
於是我們可以開乙個桶維護已選集合中的數,再用乙個維護最大值。
發現這個指標是單調不降的,直接掃即可。
時間複雜度$o(nk)$。
t3:考慮樹形dp
由於路徑不可逆,由上到下和由下到上的最優值不同。
分別開兩個陣列,$f[i][j]$代表由子節點到達$i$,撒了$j$團麵包屑的最優值;$g[i][j]$代表由$i$到達子節點,撒了$j$團麵包屑的最優值。
然後用這兩個陣列維護字首最大值,列舉lca及兩側分別用的麵包屑數,就能得出最優答案。
維護每個節點連線的節點總的鴿子數$s[i]$,可以進一步優化轉移。
從每個節點開始或結束:
$f[i][j]=max(f[i][j],s[i])$
$g[i][j]=max(g[i][j],s[i]-a[fa])$
$f[i][j]=max(f[i][j],f[son][j-1]+s[i]-a[son])$
$g[i][j]=max(g[i][j],g[son][j-1]+s[i]-a[fa])$
不撒麵包屑:
$f[i][j]=max(f[i][j],f[son][j])$
$g[i][j]=max(g[i][j],g[son][j])$
時間複雜度$o(nv)$。
省選模擬63
題意 三維都是排列的三位偏序問題。n 2e6 cdq 兩個log過不去 dy講過的題。考慮容斥,設a為滿足 a i條件的二元組個數,b c同理 要求 a cap b cap c 根據 a cup b cup c a b c a cap b a cap c b cap c a cap b cap c ...
nyoj 63 小猴子下落 模擬
記憶體限制 64mb 時間限制 3000ms special judge no accepted 2 submit 5 有一顆二叉樹,最大深度為d,且所有葉子的深度都相同。所有結點從左到右從上到下的編號為1,2,3,2的d次方減1。在結點1處放乙個小猴子,它會往下跑。每個內結點上都有乙個開關,初始全...
nyoj 63 小猴子下落 模擬
記憶體限制 64mb 時間限制 3000ms special judge no accepted 2 submit 5 有一顆二叉樹,最大深度為d,且所有葉子的深度都相同。所有結點從左到右從上到下的編號為1,2,3,2的d次方減1。在結點1處放乙個小猴子,它會往下跑。每個內結點上都有乙個開關,初始全...