不然想到乙個50分的dp,然而我的dp轉移和正解不一樣所以沒法優化所以就死了。。要是用我的dp推正解大概只能考慮實際含義。
考慮每次在已有的顏色序列中間插入一段,那麼考慮轉移的方案數,不難得到一條dp轉移路徑的貢獻是每次顏色序列長度+1的乘積。
所以列舉一共經過了多少次轉移,轉移次數為k的所有方案的貢獻之和就是$\prod(x+i)$的n-k次係數。
然後這個玩意直接分治可以做到2個$log$,考慮$f(x)=f(\frac )*f(\frac +\frac )$,假如x是奇數那麼暴力乘一項即可。
所以給另一半二項式定理展開就可以直接搞了,複雜度$o(nlogn)$。
假如k是奇數,那麼不難發現所有的轉移都不會改變最低的k進製位,所以所有的轉移方案形成了若干條鏈。
那麼只需要在每條鏈的鏈頭,也就是第乙個數處維護整條鏈的資訊即可。
考慮如何找到每個數對應的鏈頭,由於每個點所屬的鏈是可以確定的,並且可以知道當前點的前驅是誰,所以直接倍增就可以找到鏈頭。
類似週末晚會,這道題由於我當時寫了個比較優秀的線性演算法以為自己ac了。。。。然後發現恰好的限制沒法處理,然後就當場暴斃了。
實際上,由於多了恰好的限制,通過dp預處理出方案數的方法已經不太可行了,所以大概要考慮當場算。
實際上是個比較套路的插板容斥,直接列舉至少多少區間不滿足限制就行了。
省選測試26
題目大意 經典漢諾塔,操作者一定會按最優方案移動圓盤,給出乙個狀態問還需多少步 如果圓盤i現在處於t,那麼至少移動 2 步才可以到現在狀態 上面圓盤1到i 1從柱s移動到柱m需要 2 1 步,把圓盤i從柱s移動到柱t需要1步 如果圓盤i現在處於s,那不用移動,如果在m的話是不可能的,輸出no就好了 ...
省選模擬 19 09 11
ps.博主趁資訊課摸魚考的暴零模擬 看門人憑感覺就知道是長鏈剖分,將路徑查分一下,dis u di sv 2 dis lc adis u dis v 2 dis disu disv 2 disl ca 維護fu,if fu,i 表示u的子樹,深度為 i 的點的 dis disdi s最大值 考慮如何...
省選模擬96
容易發現當 k 3 時無解。然後容易證明當 k 3 時,只有 m 3 才是有解的。然後直接做不好做,考慮欽定然後容斥出合法方案。對於 k 3 列舉乙個點,然後計算另乙個的方案數。其他情況類似,欽定滿足條件的角,然後容斥。然後對於每乙個 o n 的式子用組合恒等式大力化簡就可以做到 o 1 了。考慮每...