題解還是得寫,不能偷懶啊~
多校A層衝刺NOIP2024模擬賽19
圖書管理
簽到題
考慮最困難的部分是確定中位數,不妨欽定中位數,然後計算其貢獻,然後考慮只列舉一個邊界,另一個邊界可以放桶裡。
時間複雜度 \(O(n^2)\)。
兩棵樹
機率期望
考慮拆貢獻,有等式
證明考慮圖原本的形態是一顆樹。
記點數為 \(d\),邊數為 \(e\),則有
-
\(E(d_xd_y)=\frac{1}{4}n(n-1)\),考慮一個圖中每個點的貢獻即可計算。
-
\(E(d_xe_y)=\frac{1}{8}n(n-2)\),同上。
-
\(E(e_xe_y)=\frac{1}{16}\sum_{\{u,v\}\in T}(n-1)-deg_{U,u}-deg_{U,v}+[\{u,v\}\in U]\),同上。
時間複雜度為 \(O(n\log n)\),瓶頸在判斷 \(T,U\) 中是否有相同的邊。
函式
特殊性質,trie,二分
考慮怎麼判斷答案的存在性,類比實數域上連續函式的零點存在定理,只要異或後的存在大於零的數和小於零的數則一定有解。
並且發現這個解一定在這兩個之間,二分即可。
時間複雜度 \(O((n+q)(\log n+\log V))\)。
編輯
值鍵互換,hash,二分,DP
\(O(n^3)\) 的暴力 DP 是平凡的。
( 即列舉 \(t\) 串的字尾,設 \(f_{i,j}\) 表示 \(s\) 的 \(i\) 個和 \(t\) 的 \(j\) 匹配上的最小編輯距離 )
但是這個做法是很沒有前途的,無法最佳化。
考慮一些性質,注意到 \(k\le30\) ,答案限制很小,考慮值鍵互換,並且兩個串的長度之差只會差 \(k\),所以可以設計一個只有 \(O(k^2)\) 的狀態,即 \(f_{i,j}\) 表示編輯距離為 \(i\),匹配上的 \(|t|-|s|=j\) 時,\(|s|\) 的最長長度。
還是考慮列舉字尾。
考慮如何快速轉移,注意到匹配的情況是一個 "修改一個+一段相同+修改一個+一段相同...",修改只會有 \(k\) 個,瓶頸在轉移一段相同的,雜湊+二分即可最佳化至 \(O(\log n)\)。
轉移考慮增加,刪除,替換,刷表取 \(\max\) 即可( 注意與狀態相匹配 )。
統計答案時,對於每一個 \(j\),加上最小合法( 值等於 \(|s|\) ) \(i\),即可。
時間複雜度為 \(O(nk^2\log n)\)。
注意轉移時的邊界問題。