2019暑期金華集訓 Day1 組合計數

2022-05-08 00:51:09 字數 2161 閱讀 2242

\(n\le 10\):直接暴力列舉。

\(n\le 32\):meet in the middle,如果左邊選了\(x\),右邊選了\(y\)(且\(x+y\le b\)),那麼對答案的貢獻就是

\[\]

根據範德蒙德恒等式

\[ =\sum_^n

\]所以上面可以拆開成

\[\sum_^

\]列舉\(x\),關於\(y\)是乙個字首和。

如果沒有下界的限制,只有\(p_i\in[0,r_i]\)的限制,那麼把\(r_i\)排序,方案數就是

\[\prod (r_i-i)

\]那麼對於\(p_i\in[l_i,r_i]\),可以發現把\(x=i,y=p_i\)的影象,必然是乙個環:

觀察影象,\(r[1,n]\)是最大的,如果選了就一定在最上面,而\(l[1,n]\)和\(r[n+1,2n]\)混在一起。而且如果\(l_i>l_j\),那麼\(r_i>r_j\)。

對混在一起的東西排序。如果知道總共選了幾個\(l[1,n]\),那麼當前選了之後的排名也可以求出來。

所以外層列舉選了\(k\)個\(l\),然後內層dp:設\(dp_\)表示前\(i\)個選了\(j\)個\(a\)的方案數。最後拿出\(dp_\)貢獻答案。

把\(>\)看做"無限制"-"<?的乙個串求方案數 。把\(

\[\frac

\]所以可以設\(dp_i\)表示對前\(i\)個數分組,帶容斥係數的方案數,於是可以列舉上一次分組的位置來轉移。

使用分治fft來轉移,可以做到\(o(n\log^2 n)\)。

發現如果直接算每行每列的方案數乘起來,那麼會算重。

什麼時候會算重呢?可以證明,只有形如

的時候會算重。

我們強制行佔掉了那個交點,容斥不合法的方案,列舉有幾對行列不合法,得到

\[\sum_^n (-1)^i i! (m+1)^(n+1)^

\]就沒了。

可以發現,\([0,1]\)內均勻隨機與直接放\((wxh)!\)種排列是等價的。

二項式反演,轉換為求\(f_k\)表示至少有\(k\)個是極大的的方案數。

先考慮二維的情況。如果乙個點是極大的,那麼一行一列的數都要比他小。

把極大的點拎出來,不妨設他們是從左上角往下一條對角線,並且是單調遞減的。

那麼對於乙個不是極大的點,它的唯一限制就是小於與他同一行/列的最小的極大點。

於是可以把小於號看做一條邊,矩形內的點就構成了乙個森林的結構,其中右下角的點沒有父親。

根據堆的個數是\(\frac​\)的結論,可以分析出方案數就是

\[(nm)!/(\prod_^k (nm-(n-i)(m-i)))

\](大概是吧)

然後乘上一堆組合數就是答案。

拓展到三維,應該是類似的。(應該是吧)

設\(p_\)表示\(n\)個點,隨機\(m​\)條邊,連通的概率。

設\(q_=1-p_\)。

那麼答案就是\(\sum_m q_\)。

歸納證明,可以知道\(q_=\sum_^ c_(i/n^2)^m\)。

所以答案就是

\[\sum_m \sum_^ c_(\frac i )^m\\

=\sum_^ c_\frac 1}

\]最後用某種方式求出\(c_\),就做完了。

咕了

顯然\(\min-\max\)容斥,轉換為每一種撒點方法的\(\frac\)之和。

設\(dp_\)表示前\(i\)個點,\(\sum s(s+1)=j\),帶容斥係數的方案數。

轉移\(o(n)\),總複雜度\(o(n^4)\)。

對於乙個有向無環圖,給定\(a_\)、\(b_\),求\(a_1\rightarrow b_1\),\(a_2\rightarrow b_2\),……的路徑組,並且他們兩兩不想交的方案數。

設\(g_\)表示\(a_u\rightarrow b_v\)的方案數,那麼答案就是\(g\)的行列式。

2019暑期金華集訓 Day7 動態規劃

首先發現這個樹的形態沒啥用,只需要保證度數之和是 2n 2 且度數大於0即可。然後設 dp 表示前 i 個點用了 j 個度數的最小值,然後就獲得了 o n 3 的dp。不妨每個點的度數都減1,那麼總度數就變成 n 2 了。考慮原來 i 的作用是什麼 要限制選的點數不能超過 n 此時我們總度數小於 n...

2019暑期金華集訓 Day6 計算幾何

內積不等式 a,b 2 le a,a b,b 其中 a,b 表示 a cdot b 好像是廢話?a times b a b sin theta 二維叉積 a times b x 1y 2 x 2y 1 三維叉積 a times b left begin i j k ax ay az bx by bz...

2019暑期金華集訓 Day3 字串

考慮字尾樹。sam的parent樹是反串的字尾樹,所以後面加乙個字元的時候相當於往串前面加乙個字元,恰好多出了乙個字尾。於是可以以此來理解sam。每一條路徑對應原串的乙個子串。每乙個終止節點對應一些字尾。所有到同乙個點的路徑對應的子串互為字尾,長度連續。parent樹是反串的字尾樹。sam可以用來構...