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\)。\(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?

原文地址:https://www.cnblogs.com/suwakow/p/11375060.html

时间: 2024-10-06 01:53:26

ZROI 19.07.28 组合计数/lb的相关文章

ZROI 19.07.28 序列数据结构/jk

写在前面 dls:"我不会数据结构,但是APIO的数据结构场我写了,还是蛮简单的." T1 CF643G Sol: 有一个\(O(n\log^2n)\)的做法:假设将区间排好序,取六等分点,则答案一定覆盖了若干点,求区间第\(k\)大即可. 然而会TLE 定义绝对众数为区间中出现超过一半的数. 有一个经典的做法求绝对众数,然而它要在保证有解的时候才保证正确性. 维护当前答案和出现次数,遇到相同则\(+1\),不同则\(-1\),降为\(-1\)的时候就把当前解替换. 显然如果有解的话,

ZROI 19.07.29 线性代数入门/wq

1.高斯消元 在模意义下依然有效,对主元求逆即可. 甚至可以模合数,需要对两个方程辗转相除,复杂度\(O(n^3\log p)\). 辗转相除法只要能定义带余除法就有效. 逆矩阵:对于矩阵\(A\),定义逆矩阵\(A^{-1}\)为满足\(A\cdot A^{-1}=A^{-1}\cdot A=e\)的矩阵. 求逆矩阵可以高斯消元.设有\(A\cdot A^{-1}=e\)的形式,把\(A\)消元成单位矩阵的过程中,对方程右侧进行同样的操作. 应用:设有方程\(A\cdot x=b\)(大写字母

ZROI 19.07.31 AB班ACM

写在前面:非常感谢cjc和djh两位神仙带我,非常感谢他们给了我一次躺赢的机会. 虽然我被硬点成了代码手,但我写的基本每次都有一堆罚时.然而djh爷全部1A,tql. 题目按照一血时间升序,大致符合难度顺序. A - 10^N+7 中国剩余定理板子.由于我太菜了忘记怎么crt写了,所以码了很长时间. 有个邪道做法,由于只有三个模数,且只有第三个很大.可以枚举答案是第三个模数的多少倍,只需枚举\(17\times 107\)次. B - Coins djh爷打了个表发现\(n\geq 14\)的时

ZROI 19.07.30 简单字符串/ll

写在前面:今天下午药丸--不会字符串,全程掉线/ll 给出字符串\(S\),\(q\)次询问,每次给出\(a,b,c,d\),询问\(S[a,b]\)的所有子串和\(S[c,d]\)最长公共前缀的最大值.\(|S|,q \leq 10^5\). 取反建个SAM,每次二分答案.如果存在,合法串的右端点一定在\([a+len-1,b]\),建个主席树维护一下这些后缀在不在对应串的子树里就可以. 有一个字符串\(S\),初始为空.\(m\)次操作,每次操作在第\(x_i\)次操作之后的字符串后面加上一

ZOJ 3791 An Easy Game [组合计数]

题目地址: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3791 题目描述: 给定两个长度为n的01串s1,s2,要求用k步,每一步反转s1的m个位置的数码(即0变为1,1变为0),问能有多少种做法,在k步之后将s1变成s2. 1 <= n <= 100, 0 <= k <= 100, 0 <= m <= n. 解题思路: 典型的组合计数问题. 首先比较s1和s2,记s1和s2数码不同的位置有

bzoj 1004 Cards 组合计数

这道题考察的是组合计数(用Burnside,当然也可以认为是Polya的变形,毕竟Polya是Burnside推导出来的). 这一类问题的本质是计算置换群(A,P)中不动点个数!(所谓不动点,是一个二元组(a,p),a∈A,p∈P ,使得p(a)=a,即a在置换p的作用后还是a). Polya定理其实就是告诉了我们一类问题的不动点数的计算方法. 对于Burnside定理的考察,我见过的有以下几种形式(但归根结底还是计算不动点数): 1.限制a(a∈A)的特点,本题即是如此(限制了各颜色个数,可以

[HDU 3461] Saving Beans &amp; 组合计数Lucas定理模板

Saving Beans Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem Description Although winter is far away, squirrels have to work day and night to save beans. They need plenty of food to get through those long cold

POJ 1019 组合计数

链接:POJ 1019 /***************************************** author : Grant Yuan time : 2014/10/19 14:38 source : POJ 1019 algorithm: 组合计数 ******************************************/ #include <iostream> #include <cstdio> #include <algorithm> #

Yue Fei&#39;s Battle(组合计数递推)

//求一个直径为 k 的树有多少种形态,每个点的度不超过 3 // 非常完美的分析,学到了,就是要细细推,并且写的时候要细心 还有除法取模需要用逆元 #include <iostream> #include <stdio.h> #include <string.h> #include <math.h> #include <stdlib.h> using namespace std; #define MOD 1000000007 #define L