AFO在即的年邁的\(Mychael\)因爲體力懶惰緣由,對於部分懶得動手的題目,就堆砌在這裏啦
省一點精力與時間php
hdu5896&5552
就是要求\(n\)個點帶環無向圖個數
補集轉化,用無向圖總數減去森林個數
無向圖總數是\(2^{{n \choose 2}}\)很好辦
森林總數顯然就要\(dp\)了
設\(f[i]\)爲\(i\)個點森林的個數
枚舉\(1\)號點所在樹的大小,又因爲\(n\)個點的樹有\(n^{n - 2}\)個
因此
\[ \begin{aligned} f[i] &= \sum\limits_{i = 1}^{n} {n - 1 \choose i - 1} i^{i - 2} f[n - i] \\ &= (n - 1)! \sum\limits_{i = 1}^{n} \frac{i^{i - 2}}{(i - 1)!} \times \frac{f[n - i]}{(n - i)!} \end{aligned} \]
分治\(NTT\)便可html
CF932E Team Work
和BZOJ5093是同樣的
利用\(n^k = \sum\limits_{i = 0}^{n}\begin{Bmatrix} k \\ i \end{Bmatrix} {n \choose i}i!\)化式子
最後預處理出第二類斯特林數便可
什麼?你問這個式子怎麼來的?
考慮\(k\)個位置塗\(n\)種顏色的方案爲\(n^k\)
咱們枚舉塗了幾種顏色,便可得出右式
題解spa
BZOJ4754
由這題據說了一種樹\(hash\)的方式
對於一個節點,將其子樹遞歸求出\(hash\)值,而後將\(hash\)值排序,做爲該根節點的\(hash\)元素再求一次\(hash\),同時也要加入根節點的\(hash\)值【每一個節點\(hash\)值相同】
對於一棵樹,咱們企圖對全部節點爲根求出\(hash\)值
咱們只需對任意節點爲根求一次\(hash\)值,剩餘的點能夠\(O(1)\)求出
對於該點相鄰的節點,咱們找到該點向根求\(hash\)時到該點時的\(hash\)值,再結合最終的\(hash\)值能夠計算出去掉該子樹後的\(hash\)值,從而實現根的轉移htm
對於這題,只需求出以\(B\)每一個葉子爲根的\(hash\)值,對於同一個\(hash\)值選擇編號小的葉子記錄,而後求出\(A\)每一個節點爲根的\(hash\)值,再向上接一個節點求出新的\(hash\)值,再從\(B\)中查表更新答案
複雜度是加上排序的\(O(nlogn)\)
感受之後有必要實現一下blog
BZOJ4386
數據巨小,而是有向圖路徑計數,能夠想到鄰接矩陣的次冪
二分一下答案,咱們須要求的是小於等於某個值的路徑數
若是隻考慮\(1\)的邊,咱們新加一個點做爲計數器,全部點向它連邊,它連自環
若是加入\(2\)和\(3\)的邊,就拆點,每一個點拆出\(2\)和\(3\)對應的點
複雜度\(O((3n)^3logK)\)排序