2019暑训8月6号 组合数学

组合数学

加法、乘法原理

1.有向图 G = (V,E),边权 f(u,v) 是从 u 一步到达 v 的方法数,求从 s 走 n 步到 t 的方案数。1 ≤ |V| ≤ 100,1 ≤ n ≤ 109

注意到数据范围很小,直接把用邻接矩阵存图G,取n次幂即可。

2.(EDU CF 69 E)有 n 个圆环,第 i 个内径为 li,外径为 ri。若 li ≥ rj ,则可以把第 j 个圆环套在第 i 个内部,且会浪费空间 li − rj,可以套许多层,浪费的 空间会叠加。最内侧的环 k 的内部空间 lk 也算浪费的空间。在所有极 大(不能加入新的圆环)的嵌套方案中,浪费空间最小的有多少种? 1≤n≤2×105,1≤li <ri ≤109

席大大提供了一种建图办法:把n个环的内径、外径和数字0共2n + 1个数排升序后去重,在v[i]与v[i + 1]之间连代价为v[i + 1] - v[i]的边;如果v[i], v[j]是一个环的内径外径,就在之间再连一条代价为0的边。此时,问题就转化为在该图上求最短路径的所有路径数。
在此之前,我们先来尝试说明一下这种神奇建图办法的合理之处及其可学习之处。可以想到的是,对于某个零边(u, v),u和v之间必定还存在若干条非零边,从而我们在求最短路径的时候其中的非零边并不会对我们的结果产生影响。另一方面,在我们考虑环套环的时候,这些非零边就起到了一个中转站的作用:如果非零边(u, v)对应的外径v > max{内径},那么路径终止;不然,v点一定可以通过不断的加上若干差值从而从另一个内径前进直到回归到上一状况,在这个过程中间,两个环之间的空隙大小就由这些中转站们的差值之和所决定。此外,加入0参与建图是因为操作结束后最小的环内空间也是算在浪费的空间之中的,加入0可以将该空间也算在其中。
完成建图后,我们定义dp数组:dp[i]表示从i走到某一个终结点的最短路径的长度,自然有递推关系:
dp[i] = 0 (i > max{内径})
dp[u] = min{d[v] + c(u, v) | (u, v) ∈ E}
通过记忆化更新了dp数组的内容后,我们根据表达式dp[u] == dp[v] + c(u, v)删边,使得删完后整张图仅由最短路构成。最后直接由加法原理即可获得答案:
f[v] = 1 (v > max{内径})
f[u] = Σf[v][(u, v) ∈ E][dp[u] == dp[v] + c(u, v)]

容斥原理

3.已知一个数 x,在 [1,n] 中取 k 个整数 a1,···ak,使得 gcd(a1, · · · , ak, x) = 1,有多少种方案?

具体推导超出了我的能力范围…
考虑反面,从而需要考察与x具有一个公共质因子的k序列。
在这里插入图片描述
在这里插入图片描述
其中S是x所有质因子的一个任意组合的集合,从而pi | aj 可以推导∏pi | aj。
在这里插入图片描述
倒数第二行的“d”正是表示可能出现的质因子的乘积,并且满足每一个质因子的幂次不超过1。

在这个函数中取特殊值:
在这里插入图片描述

生成函数

第一次见识生成函数的办法,感觉相当简洁方便。
下面介绍两个实例:
在这里插入图片描述
在这里插入图片描述
值得注意的是,幂次的相加与表达式的相乘具有对应关系。

4.(XDOJ)1057
席大大的做法有点…突然。
我们用组合的思想直接考虑这个问题:先在n个颜色中挑出i个颜色,这i个颜色具有i - 1个分割线,再在m - 1个分割线中选取i - 1条,相乘即得到组合数表达式。同样的,注意到i和i - 1的关系是差值恒定,所以构造函数(1 + x)n(1 + x -1)m-1考察幂次为1的系数即可。

这里补充一下大组合数取模的办法:
wilson定理
定理:(p−1)! ≡ −1 (mod p)
证明:构造两两配对的情况

wilson怎么搞大组合数??感觉不太好弄啊…

lucas定理
在这里插入图片描述
主要涉及到带余除法、算两次的思想,值得学习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值