• 口胡题集


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


    hdu5896&5552
    就是要求(n)个点带环无向图个数
    补集转化,用无向图总数减去森林个数
    无向图总数是(2^{{n choose 2}})很好办
    森林总数显然就要(dp)
    (f[i])(i)个点森林的个数
    枚举(1)号点所在树的大小,又由于(n)个点的树有(n^{n - 2})
    所以

    [egin{aligned} f[i] &= sumlimits_{i = 1}^{n} {n - 1 choose i - 1} i^{i - 2} f[n - i] \ &= (n - 1)! sumlimits_{i = 1}^{n} frac{i^{i - 2}}{(i - 1)!} imes frac{f[n - i]}{(n - i)!} end{aligned} ]

    分治(NTT)即可


    CF932E Team Work
    和BZOJ5093是一样的
    利用(n^k = sumlimits_{i = 0}^{n}egin{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))

  • 相关阅读:
    紫书 例题8-18 UVa 1442 (扫描法)
    紫书 例题8-17 UVa 1609 (构造法)(详细注释)
    紫书 例题8-16 UVa 1608 (递归)
    紫书 例题8-15 UVa 12174 (滑动窗口)
    紫书 例题8-14 UVa 1607 (二分)
    紫书 例题8-13 UVa 11093 (反证法)
    紫书 例题8-12 UVa 12627 (找规律 + 递归)
    Codeforces Round #441 (Div. 2, by Moscow Team Olympiad)
    CodeForces
    CodeForces 444C 线段树
  • 原文地址:https://www.cnblogs.com/Mychael/p/9184678.html
Copyright © 2020-2023  润新知