随笔分类 - 组合数学
摘要:因为一大堆式子实在懒得写题解了。首先用prufer推出CF917D用到的结论,然后具体见前言不搭后语的注释。
阅读全文
摘要:显然排列中的最大值会将排列分成所能看到的建筑不相关的两部分。对于某一边,将所能看到的建筑和其遮挡的建筑看成一个集合。显然这个集合内最高的要排在第一个,而剩下的建筑可以随便排列,这相当于一个圆排列。同时这些集合的相对顺序显然是固定的。那么考虑划分出一些集合分别放在两边即可。这就是一个非常标准的第一类斯
阅读全文
摘要:NOI2018冒泡排序的一个子问题。
阅读全文
摘要:打表可以发现相当于不存在长度>=3的递减子序列。 考虑枚举在哪一位第一次不卡限制。注意到该位一定会作为前缀最大值。判掉已确定位不合法的情况后,现在的问题即为求长度为i、首位>j的合法排列个数,设其为g[i][j]。 由于首位>j,1~j在排列中一定依次出现,并且在j出现之前,>j的部分也一定单增。于
阅读全文
摘要:容斥一发改为计算至少碾压k人的情况数量,这样对于每门课就可以分开考虑再相乘了。剩下的问题是给出某人的排名和分数的值域,求方案数。枚举出现了几种不同的分数,再枚举被给出的人的分数排第几,算一个类似斯特林数的东西即可。后一部分与碾压几人是无关的,预处理一下,复杂度即为三方。当然和四方跑得也差不多快。 数
阅读全文
摘要:可以发现这个过程非常类似埃氏筛,将在该区间内没有约数的数定义为质数,那么也就是求每种方案中选完所有质数的最早时间之和。 于是先求出上述定义中的质数个数,线性筛即可。然后对每个最短时间求方案数,非常显然的组合数。最好特判一下l=1的情况,毕竟如果1作为质数会有奇怪的事。 我的线性筛……跑的几乎跟埃氏筛
阅读全文
摘要:因为保证了两向量不共线,平面内任何一个向量都被这两个向量唯一表示。问题变为一张有障碍点的网格图由左上走到右下的方案数。 到达终点所需步数显然是平方级别的,没法直接递推。注意到障碍点数量很少,那么考虑容斥,即用总方案数减去经过障碍点的方案数。对每个障碍点计算其作为第一个经过的障碍点的方案数即可。
阅读全文
摘要:将每个位置上的数都-1,则显然相当于前缀和始终非负。 然后就是完全想不到的了。考虑往里面加一张-1的牌。假设在一个合法排列的最后添上一个-1,那么在该排列的所有循环同构排列中,满足前m个前缀和都非负的排列只有原合法排列,因为如果更换开头的话显然有sm+1-shead-1<=sm+1<0。并且对于每一
阅读全文
摘要:显然可以容斥去掉每人都不为空的限制。每种物品分配方式独立,各自算一个可重组合乘起来即可。
阅读全文
摘要:如果值域不大,容易想到设f[i][j]为第i个学校选了j的方案数,枚举上一个学校是哪个选了啥即可,可以前缀和优化。于是考虑离散化,由于离散化后相同的数可能可以取不同的值,所以枚举第一个和其所选数(离散化后)相同的学校是哪个,考虑这一段里选几个学校怎么选数,组合数即可。各种显然的优化后即可做到O(n3
阅读全文
摘要:逐个去除限制。第四个限制显然可以容斥,即染恰好c种颜色的方案数=染至多c种颜色的方案数-染至多c-1种颜色的方案数+染至多c-2种颜色的方案数…… 然后是限制二。同样可以容斥,即恰好选n行的方案数=至多选n行的方案数-至多选n-1行的方案数+至多选n-2行的方案数…… 限制三同理。即容斥套容斥套容斥
阅读全文
摘要:容易发现这是一个有各种玄妙性质的完全背包计数。 对于每个质数,将其选取个数写成ax+b的形式,其中x=S/pi,0<b<x。那么可以枚举b的部分提供了多少贡献,多重背包计算,a的部分直接组合数即可。多重背包计数可以前缀和优化。
阅读全文
摘要:考虑差分序列。每个差分序列的贡献是n-差分序列的和,即枚举首项。将式子拆开即可得到n*mk-1-Σi*cnt(i),cnt(i)为i在所有差分序列中的出现次数之和。显然每一个数出现次数是相同的,所以cnt(i)即等于(k-1)*mk-2。于是就很好算了。
阅读全文
摘要:考虑有序选择各子集,最后除以m!即可。设f[i]为选i个子集的合法方案数。 对f[i]考虑容斥,先只满足所有元素出现次数为偶数。确定前i-1个子集后第i个子集是确定的,那么方案数为A(2n-1,i-1)。 显然不能为空集,于是去掉前i-1个已经满足限制的方案,也即f[i-1]。 然后去掉第i个子集和
阅读全文
摘要:组合入门题。高精度入门题。
阅读全文
摘要:显然可以用总方案数减掉三点共线的情况。对于三点共线,一个暴力的做法是枚举起点终点,其间整点数量即为横纵坐标差的gcd-1。这样显然会T,注意到起点终点所形成的线段在哪个位置是没有区别的,于是枚举线段算出这样的线段条数就可以了。 似乎可以莫比乌斯反演一波。
阅读全文
摘要:没有限制的话算一个组合数就好了。对于不小于某个数的限制可以直接减掉,而不大于某个数的限制很容易想到容斥,枚举哪些超过限制即可。 一般情况下n、m、p都是1e9级别的组合数没办法算。不过可以发现模数已经被给出,并且这些模数的最大质因子幂都不是很大,那么扩展lucas就可以了。
阅读全文
摘要:显然每个点会提供相同的贡献。于是现在只考虑1号点的贡献。若其度数为i,则在2~n号点选i个连上,剩下的边随便连,这样可以算出答案为 这个式子可以O(n)计算。发现k比较小,于是考虑如何将这个式子化为与k有关的求和。 显然前面一部分可以直接提走。考虑后面一部分的组合意义:n-1个有标号盒子里面选i个,
阅读全文