5 30雜題選講

2022-05-08 01:03:09 字數 868 閱讀 5676

前三題為水題,後面兩題更有意思。

然而**全都咕咕咕了,也許以後會補。

簡單樹形dp。

簡單最短路。

簡單數字dp。

首先對於每個點,可行的區域顯然是個矩形,那麼可以先對這些矩形求交,得到合法區域。

如果不考慮限制,那麼最優點顯然是\(x,y\)的中位數。

考慮限制之後,只要定下\(x\),那麼最優的\(y\)也是確定的。

而且,可以證明,這一定是乙個凹函式,可以三分。

那麼就做完了。

首先發現一件事:乙個點的權值就是原點走到它的方案數。

換句話說,就是\(\frac\)。

考慮\(x!\)中\(p\)的個數,有乙個這樣的式子:

\[ans=\sum_ \lfloor x/p^i\rfloor

\]考慮把\(x\)在\(p\)進製下拆開為\(x=\sum_i w_i\times p^i\),那麼有

\[ans=\sum_ w_i\sum_^i p^=\sum_w_i\frac=\frac(x-\sum_ w_i )

\]也就是只與\(x\)和\(x\)的數字和有關(記數字和為\(f(x)\))。

那麼乙個點的權值不含有\(p\),當且僅當\(f(\sum x)=\sum f(x)\),也就是所有\(x\)加起來沒有進製。

那麼就可以數字dp了:把所有\(n\)維放在一起dp,記錄當前到第幾位、之前哪些維頂到了上界。

每次做一位時相當於做個揹包,但似乎轉移時需要差分以降低複雜度。

最後需要容斥一下搞掉下界,也許也可以把是否頂到下界壓進狀態裡。

並不知道複雜度是多少qwq

upd:似乎可以把下界壓進狀態裡,而且這樣就由\(4^n\)變為了\(3^n\)。(如果有同時頂到上下界的可能就單獨計算?)

2019 2 28 雜題選講

考慮將1至n m分別填入乙個擁有n行m列的 中,不允許重複。你需要滿足以下要求 第i行 1 i n 的最大值為ai。第j列 1 j m 的最大值為bj。請求出合法的填數方案數在模109 7意義下的值。1 n,m 1000 1 ai,bj n m 思路分步 填數 問題符合乘法原理,考慮從大到小填數,先...

雜題選講1 2

把序列排序後 問題轉化為子串行兩兩之間的異或和大於等於k 使用者 trie 樹優化 dp 因為不滿足單調性所以不能用二分來優化 從實際含義入手 ans n 2 sum d1 i dk i sum j k 線性預處理即可 複雜度 o n t 原先做 sa 的題時用過這個套路 列舉長度 len 2 每隔...

9 26雜題選講

非常開心,所有 都咕掉了 cy 簡單計數題,樹狀陣列維護即可。線段樹維護,如果乙個區間整除某個數的時候都等價於減同乙個數,那麼就打上區間減法的標記。複雜度玄學,但是能過。把正著做換成倒著做,把操作變成減去兩邊的數。考慮最大的那個數,顯然在它沒有變化的情況下兩邊的數都不能進行操作,所以如果它沒有變成目...