
容斥原理
Mys_C_K
人生有许多道:曾经踏足的是道,即将踏往的也是道,那什么才是道呢?唯有脚下走的才是道。一切精神或者物质都归于虚无,然后从混沌中衍生出三万道。在悲喜间涉足一条无数前人经历过,且将有无数后人奔赴的道,无论是否已经或者将要到达彼岸,然后便不再回头或是左顾右盼,即使有些道繁盛至极,夜灯如昼,无数人一浪又一浪的涌去,造就了世人皆知的辉煌;即使有些道草木凋敝,荒草丛生,只等勇敢的开拓者斩开荆棘,创造一片天地;这些都无所关,无所在意,彼岸何如、来日何方甚至过往旧事都化作一缕云烟,飘渺碧霄,我自撷高山之月色,独随足落处往行。
展开
-
[ZJOI 2016] bzoj 4455 小星星 - 容斥
最后要求一一对应,很难限制,相当于限制某些点没有被对应一个也不成立。但是其反面某些点不能被对应可以随便做,对这个容斥即可。可能需要稍微卡一下常数?#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#define rep(i,a,b) for(int ...原创 2018-04-12 11:26:48 · 416 阅读 · 0 评论 -
farm - 容斥
题目大意:令F(a,b)F(a,b)F(a,b)表示是否存在一个点(x,y)(x,y)(x,y)使得其和(a,0),(0,b)(a,0),(0,b)(a,0),(0,b)围成的三角形面积是s。求∑a=1mF(a,n)+∑b=1nF(0,b)\sum_{a=1}^mF(a,n)+\sum_{b=1}^nF(0,b)∑a=1mF(a,n)+∑b=1nF(0,b)。1000组数据,n=n1n2n3n...原创 2019-03-19 16:16:47 · 444 阅读 · 0 评论 -
[集训队作业2018]UOJ 422 小Z的礼物 - Min-Max容斥 - dp
题目大意:给你一个n*m的网格图,每个位置是0或者1,每次你可以选择一个1*2的子矩形涂黑。问期望多少次后所有1位置都被涂黑了?每次选择是独立的。n≤6,m≤100n\le6,m\le100n≤6,m≤100。题解:考虑Min-Max容斥,问题转为对每个1的子集T求第一次覆盖到T中某个1的概率,这个就是总方案数分之有多少方案至少一端在T中,用类似轮廓线的方法dp这个即可。(一开始写了直接状压的...原创 2019-02-26 10:56:32 · 376 阅读 · 0 评论 -
LOJ 6503 「雅礼集训 2018 Day4」Magic - 容斥 - 分治NTT
题目大意:有mmm种颜色的球每种aia_iai个共nnn个,问有多少种排列使得存在恰好k对相邻的球颜色相同。n<=1e5,m<=2e4.题解:首先给所有球一个标号即使颜色相同也认为是不同的球,这样最后除以∏ai!\prod a_i!∏ai!即可。然后考虑容斥,设g(x)g(x)g(x)表示至少x对的答案,知道这个就可以直接拼出ans(k)ans(k)ans(k)。然后考虑每一...原创 2019-03-05 08:57:11 · 561 阅读 · 0 评论 -
「2017 山东一轮集训 Day7」逆序对 - 容斥 - 分块背包
我不会整数划分考虑dp,转移方程形如f(i,j)=∑k=0i−1f(i−1,j−k)f(i,j)=\sum_{k=0}^{i-1}f(i-1,j-k)f(i,j)=∑k=0i−1f(i−1,j−k)因此答案是方程∑i=0nxi=k,∀i∈[1,n],xi∈[0,i)\sum_{i=0}^n x_i=k,\forall i\in[1,n],x_i\in[0,i)∑i=0nxi=k,∀i∈[...原创 2018-12-10 10:22:11 · 521 阅读 · 0 评论 -
黑暗 - 容斥 - 组合计数
题目大意:平面上a个白色棋子,b个黄色,c个蓝色,对每个棋子移动m步,每步可以上下左右移动1单位距离,问有多少种方案,使得任意两点坐标相同当且进当颜色相同。坐标绝对值、棋子总数、步数均不超过1000。题解:先容斥不同颜色坐标不同,问题转为一些点m步后走到同一个点的方案数,将(x,y)坐标变换为(x+y,x-y),然后横纵独立,然后坐标范围不大,暴力枚举组合数计算即可。#include<b...原创 2018-12-03 10:09:07 · 304 阅读 · 0 评论 -
友好国度 - 数论 - 容斥 - 并查集/LCT
题目大意:给你一颗数,点有点权,问有多少路径,路径上点权的gcd是1.题解:考虑容斥,转为计数是g的倍数的路径。把所有g的倍数的边(边权是两端点权的gcd)拿出来,每次合并两个集合前用两个集合的大小的乘积对ans[g]有贡献。然后并查集即可啥你问我为啥代码看起来像是个LCT?#include&lt;bits/stdc++.h&gt;#define rep(i,a,b) for(in...原创 2018-11-05 12:43:00 · 230 阅读 · 0 评论 -
「PKUWC2018」LOJ #2541. 猎人杀 - 容斥 - 分治NTT
题目大意:给你nnn个球,每个球有个权重wiw_iwi,每次加权扔掉一个球,问最后一号球是最后一个被扔出去的概率。∑i=1nwi≤105,∀i∈[1,n],wi&gt;0\sum_{i=1}^n w_i\le10^5,\forall i\in[1,n],w_i&gt;0∑i=1nwi≤105,∀i∈[1,n],wi>0。题解:首先考虑容斥(本质上是Min−MaxM...原创 2018-10-04 21:19:04 · 314 阅读 · 0 评论 -
[JSOI2015] bzoj 4487 染色问题 - 容斥
连着三个容斥最后一个用二项式定理缩起来即可。 (或者只容斥两层亦可)#include&amp;lt;iostream&amp;gt;#include&amp;lt;cstring&amp;gt;#include&amp;lt;cstdio&amp;gt;#include&amp;lt;algorithm&amp;gt;#define N 2010原创 2018-09-14 16:54:47 · 256 阅读 · 0 评论 -
bzoj 4671 异或图 - 线性基 - 容斥
首先考虑容斥,令x为某种集合划分,a(x)表示x不同集合的点不连通,|x|表示x种联通块个数,那么需要构造容斥系数f(y)使得: ans=∑xa(x)f(|x|)ans=∑xa(x)f(|x|)ans=\sum_{x}a(x)f(|x|) 考虑令g(x)表示x种同集合的点必须连通,不同集合的点必须不连通的方案数,那么答案是g(1,2,3,...,n)g(1,2,3,...,n)g({1,2,3...原创 2018-08-18 17:47:25 · 299 阅读 · 0 评论 -
[真学习笔记] 前夕 - 单位根反演 - 广义容斥
这次是真的学习笔记了…… 真正意义上搞明白广义容斥实在说啥…… 真正搞明白了单位根的那个性质……题目大意:有个大小为n的集合S,求所有选出若干非空且互不相等的子集使得交集大小是k的倍数。要求一个O(nk)的做法。 先来说说二项式反演这件事情: P(x)=∑xk=0Q(k)(xk)Q(x)=∑xk=0P(k)(xk)(−1)x−kP(x)=∑k=0xQ(k)(xk)Q(x)=∑k=0xP...原创 2018-08-03 15:19:12 · 1920 阅读 · 0 评论 -
bzoj 4361 isn - 容斥 - dp
考虑枚举最后剩下的序列的长度,过程随便删,这样的问题是,例如剩下的长度是x,但你删除到x+1的时候就已经不能删了。维护这个恰好很难,但是可以容斥,因为不合法的情况一定是之前也是个非降序列。#include&lt;iostream&gt;#include&lt;cstring&gt;#include&lt;cstdio&gt;#include&lt;algorithm&g原创 2018-08-02 15:33:41 · 199 阅读 · 0 评论 -
atcoder 005 D ~K Perm Counting - 容斥 - dp
考虑容斥,发现按照i%2k分类,不同的i互补影响。 首先计数f(i,j)表示同一类中,i个位置有j个不满足限制的方案数,这个显然可以在平方时间复杂度内搞出来。 然后维护出g(i,j)表示i类,n个位置j个不满足限制的方案数。这个注意到i是O(k)级别的,转移是O(n/k)级别的,所以复杂度是平方的。 然后随便选就是阶乘。#include&lt;iostream&gt;#includ...原创 2018-08-10 17:16:23 · 265 阅读 · 0 评论 -
bzoj 2839 集合计数 - 二项式反演
傻逼题#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#define lint long long#define mod 1000000007#define N 1000010#define debug(x) cerr<<#x...原创 2018-07-30 21:38:00 · 348 阅读 · 0 评论 -
[学习笔记] KthMax-Min - Min-Max容斥
有n个数字,每单位时间会出现一个数字,第i个数字有pimpim\frac{p_i}{m}的概率出现,并且∑ni=1pi=m∑i=1npi=m\sum_{i=1}^n p_i=m,求出现了k个数字的时间的期望。 n≤1000,m≤10000,n−k≤10n≤1000,m≤10000,n−k≤10n\le1000, m\le 10000,n-k\le10 这个玄学数据范围可海星,可以做到O(nm(...原创 2018-07-30 14:31:13 · 1158 阅读 · 0 评论 -
[JLOI 2016] bzoj 4559 成绩比较 - 计数 - 容斥 - 拉格朗日插值
计数至少有k名学生被碾压 发现此时除了那一堆组合数,答案是每一门课程满足其人排名是r的方案数的乘积。 考虑这个怎么算,设f_i(x)表示第i门课程其人分数是x且排名是r_i的方案数,显然是一个n-1次多项式。要对这个求前缀和,变成了一个n次多项式。发现该多项式不算组合数的部分与k无关可以预处理。#include<iostream>#include<cstring>...原创 2018-07-29 16:41:57 · 219 阅读 · 0 评论 -
2018年一轮省队集训Day2 - 多项式 - 拉格朗日插值 - 容斥原理
T1题目大意给N*M的网格图染色,问有多少种方案,使得任意一个h*w的矩阵中,黑色格子数量恒等。N,M≤109,h,w≤4N,M≤109,h,w≤4N,M\le10^9,h,w\le4题解举例来说如果h=w=4,只要满足: a[x][y]+a[x+4][y+4]=a[x+4][y]+a[x][y+4]a[x][y]+a[x+4][y+4]=a[x+4][y]+a[x][y+4...原创 2018-06-10 21:46:39 · 605 阅读 · 1 评论 -
选数 - 容斥 - 分块 - FWT
题目大意:有n个数字,要求选出k个不同的数字使得异或和是s,对所有选择方案求gcd并求和。n≤106,ai,s≤m≤50000n\le10^6,a_i,s\le m\le50000n≤106,ai,s≤m≤50000题解:首先关于gcd可以容斥成∑i=1nf(i)ϕ(i)\sum_{i=1}^n f(i)\phi(i)∑i=1nf(i)ϕ(i),f(i)f(i)f(i)表示选k个不同的数...原创 2019-04-16 15:46:42 · 533 阅读 · 0 评论