ZROI 19.07.28 组合计数/lb

有些话、适合烂在心里 提交于 2020-01-02 04:54:44

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\)\(1\leq 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)\times (-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 \times 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 \times 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 \times m\)的网格里填\([1,k]\)(可重复),要求每个元素都大于等于右边或下边的元素,求方案数。

Sol:

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

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

T10 EI与菱形计数

Sol:

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

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

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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!