• ZROI 19.07.28 组合计数/lb


    T1

    题意:(n)个变量,(0 leq x_i leq c_i),求(sum x_i = A)方案数。(n leq 32)

    Sol:

    (n leq 10)的时候容斥很水,然而生成函数掉线了

    (n leq 32)的时候,dls:“显然Meet in Middle。”然后我又掉线了

    全世界就我不会生成函数

    T2

    题意:求(0)(2n-1)的排列(p)的个数,使得对于任意的(i)(n^2 leq i^2+p_i^2 leq 4n^2)(1leq n leq 250)

    Sol:

    显然可以转换为(l_i leq p_i leq r_i)的形式。

    考虑只有(r_i)限制的时候,可以按照(r_i)排序,然后乘法原理。

    直接容斥(l_i)并不可做,但是题目有一些性质:

    (l_i,r_i)都是递减的,且({ r_0, …,r_{n-1}})最大,({ l_0,…,l_{n-1}})({ r_n, …,r_{2n-1}})混杂。

    转化一下,变成了如下序列:前半部分(a, b)混合,后半部分只有(c),且(a, c)之间两两配对,每对只能选一个,每个(b)必选。总权值是(prod (val_i-rk_i) imes (-1)^{|a|})

    考虑外层枚举(a)的个数,内层dp中,(f_{i,j})表示前(i)个选(j)(a)的权值积,这样每次不管遇到什么元素都可以算出排名。

    终于有听懂的题了qwq

    dlstxdy!

    T3 Loj #575

    题意:给定相邻元素间的大小关系,求排列数。(n leq 10^5)

    Sol:

    dls:“(10^5)是垃圾法法塔,考虑(n^2)就好了。”

    发现大于=无限制-小于。

    把若干大于转成无限制或小于,原序列变成了若干段,每段都是递增序列,答案显然是(frac{n!}{prod p_i!})随便dp就好了

    每次转移一整段,把这一整段的大于全推平。

    T4

    题意:(n imes m)的矩阵,初始均为(0),每行每列可以选一个前缀(+1),求本质不同的矩阵数。(n, m leq 10^6)

    Sol:

    dls:“除了行和列的两个前缀恰好形成反L型的两种情况之外,别的都不会重复。”

    证明?naidesu

    可以硬点其中的某一种不合法,枚举有(i)(i)列不合法,容斥系数大概长这样:

    [(-1)^i C(n, i) C(m, i) i!(n+1)^{m-i}(m+1)^{n-i} ]

    (i!)的意义是(i)行,每行选一列去配对。

    难点不在容斥,而在于猜结论

    T5 CTS2019 随机立方体

    Sol:

    结论1:(n)个数,每个数都是([0,1])之间的随机实数,等价于一个([1,n])的排列。

    结论2:(n)个点的树,每个点对应一个排列中的元素,使得树形成小根堆的形式,方案数为(frac{n!}{prod_i^n size_i})

    先考虑二维,稍后拓展到三维。

    显然(k)个极大值不会在同一行或同一列,考虑(k)个中最小的,它所在的行和列都要小于它。对于次小值,有两行两列要小于它。以此类推,发现形成了类似树形的结构,利用上面的结论可以算出方案数。

    扩展到三维也很容易,只需要多乘一维即可。

    但是这样不“恰好”,可能会有更多极大值的情况。

    二项式反演即可。

    dls:“这题是CTS里简单的那种,虽然也有国家队选手不会做。”

    dlstsdy!

    T6

    题意:(n)个点,每次随机两个点连边,问期望多少步之后联通。(n leq 100)

    Sol:

    SD省集讲过,虽然我忘得差不多了

    Min-Max容斥对期望也适用,因为取并操作的最大次数期望,不能简单的求出每个元素的最大值再取Max。但是最小次数期望就很可做,因为它的意义是最早出现的元素出现的时间,只需要从总的减去没选到这个集合的概率即可。


    Min-Max期望例题:(n)个元素的集合,每次生成子集(S)的概率为(p_S),问并为全集的期望步数。

    对每个集合算出“选不到这个集合的任何一个元素”的概率,直接反演即可。


    dls讲了个看起来很神的连通图计数的做法,大概听懂了一点,式子太长不记了

    dls:这题和Min-Max反演没关系,大家散了吧mmp

    T7

    题意:长度为(n)的序列,每次随机一个区间染黑,问期望全黑步数。(n leq 100)

    Sol:

    同样是Min-Max容斥,现在需要对每个集合求出“一次染色染不到这个集合的概率”,但是不能硬做。

    假设硬点了序列上若干个格子,那么能染的一定是若干个区间,可以dp。

    (f_{i, j, k})是前(i)个元素,最后一段连续不选的长度为(j),一共有(k)个合法的区间的容斥系数和。枚举第(i)个元素选不选,分别转移即可。

    Min-Max反演的核心就是考虑如何算出“选不到这个集合”的概率。

    T8

    题意:(n imes m)的网格,有些格点不可达。问从((1, 0))((n-1,m))((0,1))((n,m-1))两条不相交路径的方案数。

    Sol:

    对于每条相交路径,从第一个交点翻转,可以一一对应一个从((1, 0))((n,m-1))((0,1))((n-1,m))的路径(因为这样的路径必然有交点)。

    可以扩展到(k)组起终点的情况,但是都需要“必然相交”的条件。(LGV Lemma)(最后会生成一个(k)行列式)

    T9

    题意:在(n imes m)的网格里填([1,k])(可重复),要求每个元素都大于等于右边或下边的元素,求方案数。

    Sol:

    可以杨表做,但是dls想教我们LGV Lemma。

    把每个数字的轮廓线拉出来,向左上平移一格,就变成严格不相交路径条数了。

    T10 EI与菱形计数

    Sol:

    SD省集也讲过……不过是yfz讲的。

    发现这东西是个立体图,有杨表性质。

    (貌似)可以用杨表解的东西都可以转成LGV Lemma?

  • 相关阅读:
    Java实现 LeetCode 767 重构字符串(ASCII的转换)
    Java实现 LeetCode 767 重构字符串(ASCII的转换)
    Java实现 LeetCode 767 重构字符串(ASCII的转换)
    Java实现 LeetCode 766 托普利茨矩阵(暴力)
    Java实现 LeetCode 766 托普利茨矩阵(暴力)
    Java实现 LeetCode 766 托普利茨矩阵(暴力)
    Java实现 LeetCode 765 情侣牵手(并查集 || 暴力)
    219. Contains Duplicate II
    217. Contains Duplicate
    135. Candy
  • 原文地址:https://www.cnblogs.com/suwakow/p/11375060.html
Copyright © 2020-2023  润新知