口胡题集

AFO在即的年迈的\(Mychael\)由于体力懒惰原因,对于部分懒得动手的题目,就堆砌在这里啦
省一点精力与时间


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\)即可


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\)
我们枚举涂了几种颜色,即可得出右式
题解


BZOJ4754
由这题听说了一种树\(hash\)的方式
对于一个节点,将其子树递归求出\(hash\)值,然后将\(hash\)值排序,作为该根节点的\(hash\)元素再求一次\(hash\),同时也要加入根节点的\(hash\)值【每个节点\(hash\)值相同】
对于一棵树,我们企图对所有节点为根求出\(hash\)
我们只需对任意节点为根求一次\(hash\)值,剩余的点可以\(O(1)\)求出
对于该点相邻的节点,我们找到该点向根求\(hash\)时到该点时的\(hash\)值,再结合最终的\(hash\)值可以计算出去掉该子树后的\(hash\)值,从而实现根的转移

对于这题,只需求出以\(B\)每个叶子为根的\(hash\)值,对于同一个\(hash\)值选择编号小的叶子记录,然后求出\(A\)每个节点为根的\(hash\)值,再向上接一个节点求出新的\(hash\)值,再从\(B\)中查表更新答案
复杂度是加上排序的\(O(nlogn)\)
感觉以后有必要实现一下


BZOJ4386
数据巨小,而是有向图路径计数,可以想到邻接矩阵的次幂
二分一下答案,我们需要求的是小于等于某个值的路径数
如果只考虑\(1\)的边,我们新加一个点作为计数器,所有点向它连边,它连自环
如果加入\(2\)\(3\)的边,就拆点,每个点拆出\(2\)\(3\)对应的点
复杂度\(O((3n)^3logK)\)

posted @ 2018-06-14 19:41  Mychael  阅读(406)  评论(0编辑  收藏  举报