1. 程式人生 > 實用技巧 >CF1336簡要題解

CF1336簡要題解

A
注意到選了一個點它的子樹內所有節點都會被選 因為子樹深度大對答案貢獻更大
每個點選擇的貢獻是\(dep-size\)
\(dep-size\)排好序然後做就行了
B
這題我都不會做...
先假設\(x\le y \le z\) 把三個陣列排序然後用指標掃一下
然後\(3!\)列舉一下三個數大小關係
C
\(f(l,r)\)表示用\(s_{1\cdots r-l+1}\)拼出\(t_{l\cdots r}\)方案數 (對於\(i>|t|\)可為任意字元)
可以做到\(O(n^2)\)
D
神仙互動…… 我直接把別人題解粘過來吧
https://yaoduwaterpen.blog.luogu.org/solution-cf1336d


E1
我只會通過看題解的方式寫出來easy version hard version連題解都看不懂 不要問我為什麼這麼菜
有一個線性基的性質:假如線性基大小\(|S|\) 線性基組合出來的\(2^{|S|}\)種數出現次數均為\(2^{n-|S|}\)
考慮折半搜尋 線性基分成高位和低位分別暴力\(2^{|S|}\)列舉
列舉高位的popcount 然後與低位的線性基fwt
E2
不會……
F
orz hujiaqi
考慮一個計數轉化: [len>=k]=(k-子鏈個數)-(k+1-子鏈個數)
現在要做的就是統計每個長度為k的鏈被覆蓋幾次
考慮把所有k-子鏈按照樹剖dfs序寫在二維平面上 只有log段 我用map維護的……