多校A層衝刺NOIP2024模擬賽16
T1 四捨五入
簽到題
注意到一個數是否會入上去只和其剩餘繫有關,即滿足 \(i\mod j<\frac{1}{2}j\),會入上去,考慮列舉 j 的倍數,其貢獻就成了一個區間,差分即可。
時間複雜度是調和級數的,為 \(O(n\ln n)\)。
T2 填算符
貪心,特殊性質
顯然將所有 \(\&\) 放在最左端一定不劣(不管是考慮前多少),考慮在此基礎上調整即可。
具體的可以貪心調整最右邊一個,即將最右邊的從最右端往左移,第一個合法的即使其所在位置,然後由於是 \(\&\) 操作,他的貢獻會與前邊的掛鉤,找到它獨一無二的貢獻,作為下一個合法的判斷即可。
時間複雜度為 \(O(n\log n)\)。
T3 道路修建
基環樹,換根DP,樹上問題,樹鏈剖分,線段樹,倍增
發現加邊操作後的答案一定會包含原樹的答案,而新加的答案為所有經過所加邊的路徑。
所以可以先 \(O(n)\) DP,算出原樹的答案,然後考慮新增邊的貢獻。
考慮套路,計算路徑長度的和轉化為每一條邊的貢獻(經過的次數)。
由於是基環樹,可以先考慮環上的邊的貢獻。
這一部分可以分為新加邊和原樹邊。
-
新加邊
顯然經過其的次數為總路徑的個數,考慮計算總路徑的個數。路徑只有兩個端點,而現在又欽定了必須經過新加邊,而且有路徑點不交的限制,所以只要選出兩個點則能對應唯一的路徑。即就是 \(\binom{n}{2}\),但此時算入了兩個點都在同一個子樹的貢獻,減掉即可。
記為 \(tot=\binom{n}{2}-\sum_{v\in circle}\binom{siz_v}{2}\) -
原樹邊
顯然能求出不經過的次數(相對於當前所加邊而言),即邊兩邊聯通塊的大小之積,記為 \(g_i\),則經過的次數就為 \(tot-g_i\)
所以環上邊的貢獻為 \((dis_{u,v}+1)tot-\sum_{v\in circle}g_v\)
再考慮子樹(環上的子樹)的貢獻
- 記 \(f_i=\sum_{v\in subtree_i}dis_{i,v}\),則一個子樹的貢獻為 \(f_i(n-siz_i)\)
所以總貢獻為 \((dis_{u,v}+1)tot-\sum_{v\in circle}g_v+\sum_{v\in circle}f_v(n-siz_v)\)
現在考慮怎麼快速求出 \(\sum_{v\in circle}\binom{siz_v}{2},\sum_{v\in circle}g_v,\sum_{v\in circle}f_v(n-siz_v)\) 這三個部分,分別記為 \(res1,res2,res3\)。
-
\(res1\)
直接維護的難點在於 \(siz\) 在變(因為定義的是環上的子樹),所以可以考慮樹剖 \(siz\) 只維護所有的輕兒子的貢獻,這樣除了鏈底需要特殊處理,其他的能直接維護線上段樹上。還需特殊處理 \(lca_{u,v}\),記 \(tot_i=\sum_{j=1}^ndis_{i,j}\) (不同與前面的 \(tot\)),所以得換根 DP 求出 \(tot\) 陣列。 -
\(res2\)
每個點套路維護其父向邊的 \(g\) 陣列,樹剖即可。 -
\(res3\)
類似 \(res1\)
總時間複雜度為 \(O(n\log^2n)\)。
可以倍增,這樣就能最佳化掉一支 \(\log\)
T4 逆序圖
DP,結論題
不會,但是可以講講結論
upd:會了,但是先講講結論
結論:逆序對的關聯關係不會是巢狀狀的,即關聯關係會構成一段區間,並且這一段區間的值是連續的
證明考慮反證法,即嘗試用 \(4\) 個值構造出一個巢狀狀的關聯關係,發現由於單調性顯然是不行的。
即就是說序列是一些單調遞增的連通塊組成的
題目所求的即是在這些連通塊中每個至多選擇一個的權值之積。並且很好的是題目算貢獻的方式考慮的兩點之差,所以只用考慮相對量。
考慮 DP 解決。
-
設計狀態
\(f_{i,0}\) 表示欽定 \(1∼i\) 在同一個(不一定合法)連通塊內部時的權值和。
\(f_{i,1}\) 表示恰好 \(1∼i\) 在同一個(一定合法)連通塊內部時的權值和。
\(g_i\) 表示恰好 \(1∼i\) 在同一個(一定合法)聯通塊內的方案數。 -
轉移
\[f_{i,0}=\sum_{j=1}^{i-1}F_j(i-j)\binom{i}{2}(i-2)! \]考慮每一對的貢獻即可。
\[g_i=i!-\sum_{j=1}^{i-1}j!g_{i-j} \]容斥計算。
\[f2_i=g2_i-\sum_{j=1}^{i-1}j!f2_{i-j}-\sum_{j=1}^{i-1}g2_jf1_{i-j} \]同理容斥。
最後將塊拼接起來即可。
設 \(res_i\) 表示考慮 \(1∼i\) 的答案
則有轉移
三項轉移分別是選這一塊,不選這一塊,以這一塊為起點。
時間複雜度為 \(O(n^2)\)。
FFT能最佳化為 \(O(nlogn)\),不會多項式。