模擬測試63

2022-05-06 20:51:09 字數 952 閱讀 4207

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處放乙個小猴子,它會往下跑。每個內結點上都有乙個開關,初始全...