随笔分类 - 容斥原理
摘要:考虑容斥,计算至少有k个极大数的概率。不妨设这k个数对应的格子依次为(k,k,k)……(1,1,1)。那么某一维坐标<=k的格子会对这些格子是否会成为极大数产生影响。先将这样的所有格子和一个数集对应起来,即将答案乘上一个组合数。然后需要考虑的就是这些格子有多少种合法排列顺序。 这个排列需要满足的是(
阅读全文
摘要:考虑外向树怎么做。显然设f[i][j]为i子树中出现权值和为j的合法方案的概率,转移做树形背包即可。 如果树上只有一条反向边,显然可以先不考虑该边计算概率,再减去将整棵树看做外向树的概率。于是考虑容斥,进一步拓展到多条反向边,就是考虑0条反向边的概率-考虑1条反向边的概率+考虑2条反向边的概率……容
阅读全文
摘要:显然相当于求有不超过n-2m种颜色出现奇数次的方案数。由于相当于是对各种颜色选定出现次数后有序排列,可以考虑EGF。 容易构造出EGF(ex-e-x)/2=Σx2k+1/(2k+1)!,即表示该颜色只能选奇数个。同理有EGF(ex+e-x)/2=Σx2k/(2k)!,即表示该颜色只能选偶数个。 考虑
阅读全文
摘要:https://www.cnblogs.com/AwD-/p/6600650.html
阅读全文
摘要:设f[S]为S点集是SCC的方案数。考虑通过去掉不合法方案转移。可以枚举入度为0的SCC所含点集S',这样显然S^S'内部的边和由S'连向S^S'的边删还是不删任选。但是这样无法保证S'包含所有入度为0的SCC,于是考虑容斥,瞎猜可以得到容斥系数与SCC数量有关,于是设g[i][S]为S包含i个无关
阅读全文
摘要:因为一大堆式子实在懒得写题解了。首先用prufer推出CF917D用到的结论,然后具体见前言不搭后语的注释。
阅读全文
摘要:首先只有一份图时显然可以状压dp,即f[S][i]表示S子集的哈密顿路以i为终点的方案数,枚举下个点转移。 考虑容斥,我们枚举至少有多少条原图中存在的边(即不合法边)被选进了哈密顿路,统计出这个情况下的哈密顿路数量就可以容斥了。 考虑暴力,显然是枚举在每张图中选择了哪些不合法边。注意到当固定了某些边
阅读全文
摘要:显然容斥后转化为求树链的交。这个题非常良心的保证了查询的路径都是到祖先的,求交就很休闲了。
阅读全文
摘要:显然存在方案的数一定是L的因数,考虑对其因子预处理答案,O(1)回答。 考虑每个质因子,设其在g中有x个,l中有y个,则要求所有选中的数该质因子个数都在[x,y]中,且存在数的质因子个数为x、y。对于后一个限制,显然可以简单地容斥,即[x,y]-[x+1,y]-[x,y-1]+[x+1,y-1],枚
阅读全文
摘要:考虑min-max容斥,改为求位集合内第一次有位变成1的期望时间。求出一次操作选择了S中的任意1的概率P[S],期望时间即为1/P[S]。 考虑怎么求P[S]。P[S]=∑p[s] (s&S>0)=1-∑p[s] (s&S==0)。做一个高维前缀和即可。
阅读全文
摘要:如果直接dp,状态里肯定要带上已走过的点的集合,感觉上不太好做。 考虑一种对期望的minmax容斥:其中Max(S)为遍历完S集合的期望步数,Min(S)为遍历到S集合中一个点的期望步数。当然才不管怎么证,反正看上去非常优美。 设f[i][S]为由i节点出发的Min(S),显然有f[i][S]=Σf
阅读全文
摘要:考虑容斥,枚举一个子集S在1号猎人之后死。显然这个概率是w1/(Σwi+w1) (i∈S)。于是我们统计出各种子集和的系数即可,造出一堆形如(-xwi+1)的生成函数,分治NTT卷起来就可以了。
阅读全文
摘要:容斥一发改为计算至少碾压k人的情况数量,这样对于每门课就可以分开考虑再相乘了。剩下的问题是给出某人的排名和分数的值域,求方案数。枚举出现了几种不同的分数,再枚举被给出的人的分数排第几,算一个类似斯特林数的东西即可。后一部分与碾压几人是无关的,预处理一下,复杂度即为三方。当然和四方跑得也差不多快。 数
阅读全文
摘要:因为保证了两向量不共线,平面内任何一个向量都被这两个向量唯一表示。问题变为一张有障碍点的网格图由左上走到右下的方案数。 到达终点所需步数显然是平方级别的,没法直接递推。注意到障碍点数量很少,那么考虑容斥,即用总方案数减去经过障碍点的方案数。对每个障碍点计算其作为第一个经过的障碍点的方案数即可。
阅读全文
摘要:显然可以容斥去掉每人都不为空的限制。每种物品分配方式独立,各自算一个可重组合乘起来即可。
阅读全文
摘要:逐个去除限制。第四个限制显然可以容斥,即染恰好c种颜色的方案数=染至多c种颜色的方案数-染至多c-1种颜色的方案数+染至多c-2种颜色的方案数…… 然后是限制二。同样可以容斥,即恰好选n行的方案数=至多选n行的方案数-至多选n-1行的方案数+至多选n-2行的方案数…… 限制三同理。即容斥套容斥套容斥
阅读全文
摘要:首先dp出长度为i的不下降子序列个数,显然这可以树状数组做到O(n2logn)。 考虑最后剩下的序列是什么,如果不管是否合法只是将序列删至只剩i个数,那么方案数显然是f[i]*(n-i)!。如果不合法,说明这个序列是由一个长度为i+1的非降序列删除一个数得来的,所以将其减去f[i+1]*(i+1)*
阅读全文
摘要:显然可以转化为一个阶梯状01矩阵每行每列取一个使权值和为k的方案数。直接做不可做,考虑设f[i][j]为前i行权值和至少为j,即在其中固定了j行选1的方案数。设第i行从1~a[i]列都是1且a[i]+1列是0,则f[i][j]=f[i-1][j]+f[i-1][j-1]*(a[i]-j+1)。剩下的
阅读全文
摘要:如果能够知道不大于n的合法数有多少个,显然就可以二分答案了。 考虑怎么求这个。容易想到容斥,即枚举完全平方数。我们知道莫比乌斯函数就是此种容斥系数。筛出来就可以了。 注意二分时会爆int。
阅读全文
摘要:如果只考虑某个子矩阵的话,其最大值为v的方案数显然是vsize-(v-1)size。问题在于处理子矩阵间的交叉情况。 如果两个交叉的子矩阵所要求的最大值不同,可以直接把交叉部分划给所要求的最大值较小的子矩阵。那么,所要求最大值不同的格子彼此间是独立的。于是现在可以只考虑要求相同的格子。 直接计算似乎
阅读全文