
【算法】容斥原理
文章平均质量分 73
cz_xuyixuan
这个作者很懒,什么都没留下…
展开
-
【CodeForces1188E】Problem from Red Panda
【题目链接】点击打开链接【思路要点】我们称将其余每一种颜色的气球各一个标为颜色 iii 为操作 iii 。考虑对于给定的 {ai}\{a_i\}{ai} ,如何判断是否能够进行 aia_iai 次操作 iii ,下称 {ai}\{a_i\}{ai} 是否可行。显然最优的方案是每一次操作一个 aia_iai 不为 000 且对应的气球数最少的颜色。按照这样的策略,可以...原创 2019-08-25 11:12:45 · 543 阅读 · 3 评论 -
【LOJ3071】「2019 集训队互测 Day 2」神树大人挥动魔杖
【题目链接】点击打开链接【思路要点】记 waysiways_iwaysi 表示从 111 号点走到 iii 号点的方案数,有 waysi=p×waysi−1+q×waysi−2 (i≥2)ways_{i}=p\times ways_{i-1}+q\times ways_{i-2}\ (i\geq2)waysi=p×waysi−1+q×waysi−2 (...原创 2019-05-02 16:39:37 · 1473 阅读 · 0 评论 -
【校内训练2019-04-17】Graph
【思路要点】记 PN(k)P_N(k)PN(k) 表示 NNN 的点的图选择 kkk 次,图尚不连通的概率,那么E(Ans)=∑k=0∞PN(k)E(Ans)=\sum_{k=0}^{\infty}P_N(k)E(Ans)=k=0∑∞PN(k)考虑计算 PN(k)P_N(k)PN(k) ,枚举 iii ,选定一个大小为 iii 的不连通的边集,限定 kkk 次选择均在该边集内,则...原创 2019-04-19 14:07:00 · 246 阅读 · 0 评论 -
【AtCoder】Tenka1 Programmer Contest 2019 题解
【比赛链接】点击打开链接【题解链接】点击打开链接【C】 Stones【思路要点】枚举最后的石子分布,用前缀和优化计算代价。时间复杂度 O(N)O(N)O(N) 。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 2e5 + 5;typedef long lon...原创 2019-04-21 13:27:55 · 672 阅读 · 0 评论 -
【LOJ6402】校门外的树
【题目链接】点击打开链接【思路要点】不难发现联通块一定是一个值域连续的区间,任何一个排列的联通状况一定是分成了若干个值域递减的区间。记 coeficoef_icoefi 表示 iii 个点的排列, 111 至 iii 均连通的方案数。由容斥原理,有 coefi=i!−∑j=1i−1coefj×(i−j)!coef_i=i!-\sum_{j=1}^{i-1}coef_j\ti...原创 2019-04-12 17:36:20 · 347 阅读 · 0 评论 -
【校内训练2019-04-09】Wsm
【思路要点】考虑合法序列 AAA 的性质:(1)(1)(1) 、 AAA 包含 000 。(2)(2)(2) 、若 0∼x−10\sim x-10∼x−1 均在 AAA 中,那么对于任意自然数 kkk , kx∼(k+1)x−1kx\sim (k+1)x-1kx∼(k+1)x−1 或是均在 AAA 中,或是均不在 AAA 中。(3)(3)(3) 、若 AAA 中次小的元素为 xxx ,...原创 2019-04-10 13:38:28 · 242 阅读 · 0 评论 -
【校内训练2019-04-03】星际穿越
【思路要点】考虑 r=1r=1r=1 ,问题要求将排列分成若干段长度为 kkk 的极长上升序列,这里假设 NNN 是 kkk 的倍数, NNN 不为 kkk 的倍数时只需要多一些细节处理。若不考虑极长的限制,这里的排列数显然为 N!k!Nk\frac{N!}{k!^{\frac{N}{k}}}k!kNN! ,那么,我们可以用容斥原理计算考虑极长限制的方案数,即记 dpidp_idpi...原创 2019-04-03 13:03:18 · 342 阅读 · 0 评论 -
【LOJ6570】毛毛虫计数
【题目链接】点击打开链接【思路要点】定义毛毛虫的主链为去掉度为 111 的节点的部分。主链长度不足 222 的情况即为一个菊花图,显然有 N−[N=2]N-[N=2]N−[N=2] 种。考虑枚举主链长度 i (i≥2)i\ (i\geq 2)i (i≥2) ,任意排列主链上的点,共有 Ni2\frac{N^{i}}{2}2Ni 种。对于剩余节点,我们要...原创 2019-04-12 13:11:28 · 607 阅读 · 0 评论 -
【校内训练2019-04-01】IOer
【思路要点】我们需要计算的答案即为 ∑i1+i2+⋯+iM=N(u+v)i1(2u+v)i2…(M×u+v)iM\sum_{i_1+i_2+\dots+i_M=N}(u+v)^{i_1}(2u+v)^{i_2}\dots(M\times u+v)^{i_M}∑i1+i2+⋯+iM=N(u+v)i1(2u+v)i2…(M×u+v)iM 。考虑如下组合问题:有一个长度为 N+M−...原创 2019-04-02 17:35:27 · 365 阅读 · 2 评论 -
【校内训练2019-05-22】神秘代码
【思路要点】注意到若序列中 000 的限制不存在,我们便只需要将每一条链分成若干段,使得长度一定的段数量一定即可,可以设计一个简单的 dpdpdp 解决问题。考虑容斥原理,枚举将 000 的限制变为 111 的限制。注意到最长的链 1−2−4−8−16−321-2-4-8-16-321−2−4−8−16−32 长度为 666 ,因此我们只需要统计 666 种长度的段的数量,实际状态数 C...原创 2019-05-24 12:25:57 · 693 阅读 · 0 评论 -
【LOJ3119】「CTS2019」随机立方体
【题目链接】点击打开链接【思路要点】考虑如下计算方式:任选 kkk 个三维坐标互不相等的位置,规定它们的大小关系,则对于每一个位置,都有至多一个限制,要求该值小于另一位置的值,这样的关系形成了一棵树,可以通过计算树的拓扑排序数来得到这 kkk 个位置均为极大点的概率,记所有选法的概率和为 func(k)func(k)func(k) 。对于一个具有 iii 个极大点的方案,它会...原创 2019-05-30 13:24:50 · 272 阅读 · 0 评论 -
【LOJ3124】「CTS2019」氪金手游
【题目链接】点击打开链接【思路要点】考虑给出的图为外向树的情况,各个点都需要早于子树中所有的点,记 sizeisize_isizei 表示 iii 子树中所有点的 wiw_iwi 之和,则获奖概率为∏i=1Nwisizei\prod_{i=1}^{N}\frac{w_i}{size_i}i=1∏Nsizeiwi对所有 wiw_iwi 的分布进行背包即可。给出的...原创 2019-05-30 16:51:44 · 512 阅读 · 0 评论 -
【AtCoder】AtCoder Grand Contest 036 题解
【比赛链接】点击打开链接【题解链接】点击打开链接【A】 Triangle【思路要点】注意到对于任意一个格点三角形,我们都可以找到一个点,将其平移至原点处后,另外两个点在同一象限内,或在该象限相邻的坐标轴上。因此,可以不失一般性地假定一个点在 (0,0)(0,0)(0,0) 处。令另外两点的坐标为 (x,y),(a,b)(x,y),(a,b)(x,y),(a,b)...原创 2019-08-09 21:08:44 · 499 阅读 · 0 评论 -
【AtCoder】AtCoder Grand Contest 035 题解
【比赛链接】点击打开链接【题解链接】点击打开链接【A】 XOR Circle【思路要点】题目给出的要求等价于相邻的三个数异或和为 000 。特判全部 aia_iai 均为 000 的情况,这种情况是有解的。否则,如果确定 1,21,21,2 号位置为 a,ba,ba,b ,则 333 号位置一定为 a⊕ba\oplus ba⊕b , 444 号位置一定为 aa...原创 2019-08-04 18:25:14 · 547 阅读 · 2 评论 -
【LOJ555】抢红包
【题目链接】点击打开链接【思路要点】考虑 M=0M=0M=0 的做法,记 P(x,y)P(x,y)P(x,y) 表示经过 (x,y)(x,y)(x,y) 的概率,也即 (x+yx)AyBx\binom{x+y}{x}A^yB^x(xx+y)AyBx ,并记 Ft(x)=∑i=0tP(i,t−i)×xiF_t(x)=\sum_{i=0}^{t}P(i,t-i)\times x^i...原创 2019-07-06 16:32:43 · 444 阅读 · 0 评论 -
【省内训练2019-06-28】Swords
【思路要点】补集转化,对于每个询问 SSS ,考虑求不能满足条件的方案数 query(S)query(S)query(S) 。记 cntS=∑i=1N[ai∪S=∅]cnt_S=\sum_{i=1}^{N}[a_i\cup S=\empty]cntS=∑i=1N[ai∪S=∅] ,即不能满足 sss 中任何一个条件的 aia_iai 的个数。则由容斥原理,有 query(S)=∑...原创 2019-06-28 19:03:51 · 495 阅读 · 0 评论 -
【2019 江苏省队集训】Day1 解题报告
【T1】 光影交错【思路要点】NNN 轮后仪式仍然进行的概率为 (1−p)N(1-p)^N(1−p)N ,当 p=10−5p=10^{-5}p=10−5 时,取 N>107N>10^7N>107 可以保证该概率在 10−2010^{-20}10−20 以内,因此忽略这部分情况不会导致精度要求不能接受的误差产生。记 f(i)f(i)f(i) 表示出现 ii...原创 2019-07-02 14:13:33 · 1440 阅读 · 1 评论 -
【LOJ575】「LibreOJ NOI Round #2」不等关系
【题目链接】点击打开链接【思路要点】见 官方题解 。(反正也是我写的)时间复杂度 O(NLog2N)O(NLog^2N)O(NLog2N) 。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 262144;const int P = 998244353;typedef l...原创 2019-07-07 20:03:40 · 1383 阅读 · 0 评论 -
【LOJ3102】「JSOI2019」神经网络
【题目链接】点击打开链接【思路要点】将树拆成若干路径,并考虑长度 ≥2\geq2≥2 的路径的放置方向。然后问题变成了在环上放点,相邻位置颜色不同的方案数。做法同 【校内训练2018-06-28】比谁数得对 。时间复杂度 O((∑ki)2)O((\sum k_i)^2)O((∑ki)2) 。【代码】#include<bits/stdc++.h>us...原创 2019-06-20 14:37:12 · 896 阅读 · 0 评论 -
【LOJ3053】「十二省联考 2019」希望
【题目链接】点击打开链接【思路要点】可以发现,中心能够存在的位置同样是树上的一个连通块,一个方案合法当且仅当该联通块大小非零。注意到布尔值 “连通块大小非零” 等于 “连通块内部点数” 减去 “连通块内部边数” ,可以考虑枚举存在于最终连通块上的一点或一边,并计算使得该点或边存在于最终连通块上的方案数,再利用上述关系计算答案。以枚举存在于最终连通块上的一点 xxx 为例,我们...原创 2019-06-19 21:26:00 · 920 阅读 · 0 评论 -
【省内训练2019-06-01】卖弱
【思路要点】问题等价于禁用 N×NN\times NN×N 的矩阵的左上角 A×AA\times AA×A 的三角形范围、右下角 (N−A)×(N−A)(N-A)\times (N-A)(N−A)×(N−A) 的三角形范围,在剩余部分各行各列均选出恰好一个元素的方案数。若只禁用一个 (N−A)×(N−A)(N-A)\times (N-A)(N−A)×(N−A) 的三角,显然方案数为 AN−...原创 2019-06-05 12:38:31 · 333 阅读 · 0 评论 -
【校内训练2019-04-10】开挂
【思路要点】考虑如何判断一个方案是否合法。框定一个极小的矩形使得所有 111 都在其内,覆盖该矩形左上、右下角或右上、左下角,若存在一种方式能够覆盖所有 111 ,那么方案合法。考虑对该方式进行容斥,枚举框定的矩形大小,计算覆盖该矩形左上、右下角时合法的方案数 加 覆盖该矩形右上、左下角时合法的方案数 减 两种方式中均被计算的方案数即可。计算上述方案数时,需要保证矩形的各个边界上均有 ...原创 2019-04-11 15:34:38 · 246 阅读 · 0 评论 -
【校内训练2019-04-10】神犇
【思路要点】令 ai=cntxi−cntyi,bi=cntyi−cntzi,ci=cntzi−cntxia_i=cntx_i-cnty_i,b_i=cnty_i-cntz_i,c_i=cntz_i-cntx_iai=cntxi−cntyi,bi=cntyi−cntzi,ci=cntzi−cntxi , sis_isi 表示 iii 处的前缀异或和。则答案 AnsiAns...原创 2019-04-11 15:34:51 · 280 阅读 · 0 评论 -
【LOJ2983】「WC2019」数树
【题目链接】点击打开链接【思路要点】op=0op=0op=0 ,算一算两棵树的公共边数即可。时间复杂度 O(N)O(N)O(N) 或 O(NLogN)O(NLogN)O(NLogN) 。op=1op=1op=1 ,考虑枚举蓝树上的一个边集 SSS ,强制红树上同样存在这些边,计算将剩余 N−∣S∣N-|S|N−∣S∣ 个联通块连成一棵树的方案数,更新答案。上述算法中,枚举蓝...原创 2019-03-31 21:13:53 · 673 阅读 · 0 评论 -
【BZOJ4671】异或图
【题目链接】 点击打开链接 【思路要点】 直接考虑联通的情况比较困难,我们考虑枚举NNN个元素的所有集合划分的方案,并强制不同的集合间不能有边,计算合法的方案数,再用容斥原理计算答案。 记fxfxf_x表示在上述过程中所有划分成xxx个集合的划分方案的合法方案数之和(注意同一个子集选取方案可能被计算多次)。 令gxgxg_x表示使得图中恰好有xxx个联...原创 2018-06-26 17:32:02 · 571 阅读 · 0 评论 -
【AtCoder】AtCoder Regular Contest 096 题解
【比赛链接】点击打开链接【题解链接】点击打开链接【C】Half and Half【思路要点】每次考虑购买两个AB披萨是否会节省,如果会,则购买,并重复这个考虑的过程。否则结束这个考虑的过程,购买剩余所需的A披萨和B披萨。时间复杂度\(O(min\{X,Y\})\)。【代码】#include<bits/stdc++.h>using namespace std;const int MA...原创 2018-06-09 21:07:12 · 399 阅读 · 0 评论 -
【AtCoder】AtCoder Regular Contest 093 题解
【比赛链接】点击打开链接【题解链接】点击打开链接【C】Traveling Plan【思路要点】删除一个点本质上只改变了\(O(1)\)对相邻关系,在总和的基础上调整即可。时间复杂度\(O(N)\)。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 100005;template <typename...原创 2018-06-13 20:58:43 · 470 阅读 · 0 评论 -
【BZOJ3622】已经没有什么好害怕的了
【题目链接】点击打开链接【思路要点】令\(K=\frac{N+K}{2}\),问题等价于存在恰好\(K\)对大于关系的最大匹配数。直接DP难以表示状态,考虑容斥原理。我们选定一个\(A\)中的集合,规定该集合中的点一定要大于\(B\)集合中与其相匹配的点,其余点不做要求,将符合条件的方案数加入\(Cnt_{Size}\),其中\(Size\)为所选集合的大小。定义\(Ans_i\)为存在恰好\(i...原创 2018-05-22 14:38:46 · 252 阅读 · 0 评论 -
【BZOJ3771】Triple
【题目链接】点击打开链接【思路要点】分别考虑丢失1把、2把、3把斧子的方案数。定义多项式\(A\),满足\(A_i=[i\ exist\ in\ input]\)。丢失1把斧子的方案数显然就是\(A_i\)。丢失2把斧子的方案数可以通过容斥原理计算,考虑先计算出\(B=A^2\)。对于一种方案\((x,y)\),当\(x=y\),它会被计算1次,否则它会被计算2次,我们只希望统计\(x\ne y\...原创 2018-05-21 18:42:52 · 313 阅读 · 0 评论 -
【BZOJ4767】两双手
【题目链接】点击打开链接【思路要点】平面内每一个点可以被两个向量唯一确定,因此我们可以将平面内每一个点\(P\)唯一表示为\(A*x+B*y\)的形式,一下简称\((x,y)\)。显然,当\(x\)或\(y\)不是整数,这个点可以被忽略。现在问题被我们转化为了\(A=(1,0)\),\(B=(0,1)\)时的问题。若\(x\)和\(y\)均比较小,那么问题可以简单地用DP解决。但由于我们对问题进行...原创 2018-05-21 16:50:38 · 788 阅读 · 0 评论 -
【BZOJ2839】集合计数
【题目链接】点击打开链接【思路要点】直接上容斥原理。令\(M=N-K\),\(Ans=\binom{N}{M}*\sum_{i=0}^{M}(-1)^{M-i}*\binom{M}{i}*(2^{2^i}-1)\)时间复杂度\(O(N+MLogN)\)。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 1...原创 2018-05-21 11:21:32 · 367 阅读 · 0 评论 -
【BZOJ4710】【JSOI2011】分特产
【题目链接】点击打开链接【思路要点】直接上容斥原理。时间复杂度\(O(NM)\)。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 5005;const int P = 1e9 + 7;template <typename T> void chkmax(T &x, T y) {x ...原创 2018-05-21 10:32:18 · 198 阅读 · 0 评论 -
【BZOJ4487】【JSOI2015】染色问题
【题目链接】点击打开链接【思路要点】可以看做一共有\(N+M+C\)条限制条件。由容斥原理,答案为\(\sum_{i=1}^{N}\sum_{j=1}^{M}\sum_{k=0}^{C}(-1)^{N+M+C-i-j-k}*(k+1)^{i*j}*\binom{N}{i}*\binom{M}{j}*\binom{C}{k}\)。预处理乘幂,时间复杂度\(O(N*M*C)\)。【代码】#includ...原创 2018-04-18 19:42:32 · 611 阅读 · 0 评论 -
【CodeForces662C】Binary Table
【题目链接】点击打开链接【思路要点】行的取反情况与每一列的初始元素可以看做若干个小于\(2^{N}\)的二进制数。注意到行很小,我们考虑先枚举每一行是否取反,令行的取反情况为\(Mask\)。那么,每列的二进制数\(x_i\)应当变成\(x_i\ xor\ Mask\)。令\(bits_i\)代表\(i\)的二进制表示1的个数,\(Mask\)的最小答案应当为\(\sum_{i=1}^{M}min...原创 2018-03-07 15:22:41 · 483 阅读 · 0 评论 -
【BZOJ3812】【UOJ37】【清华集训2014】主旋律
【题目链接】BZOJUOJ【思路要点】我们希望求出使得图强联通的边集数,这等价于求出所有边集数减去使得图不强连通的边集数。首先考虑一种非常暴力的做法,我们枚举最终的图缩点后的情况。那么,剩下的图必须是一个DAG,我们希望求出这张图在是DAG的情况下可行的边集数,并与每一个强连通分量加边方案数相乘,得到答案。后面的这个问题是原问题的一个子问题,递归对对应强联通分量的导出子图求解即可。问题在于求解一张...原创 2018-02-27 13:37:25 · 1318 阅读 · 0 评论 -
【校内训练2018-06-28】比谁数得对
【思路要点】 首先考虑a1=1a1=1a_1=1的情况。 不妨将1固定在1号位置,问题变成了链上的版本,最后只要将答案乘以∑ai∑ai\sum a_i即可。 记prodi,jprodi,jprod_{i,j}表示将iii个相同的数断成jjj段,所有不同的断法每一段权值乘积的和。 显然有prodi,j=∑ik=1k∗prodi−k,j−1prodi,j=∑k=1ik∗pro...原创 2018-06-28 20:30:26 · 501 阅读 · 0 评论 -
【51Nod1446】限制价值树
【题目链接】 点击打开链接 【思路要点】 首先,也是最重要的一点,我们发现若我们规定一些goodgoodgood点为greatgreatgreat,剩余的goodgoodgood点不为greatgreatgreat,可行的生成树的方案仅和我们规定为greatgreatgreat的goodgoodgood点的数量有关。 因此问题被分成了两个: 、1...原创 2018-08-24 20:32:52 · 284 阅读 · 0 评论 -
【51Nod1805】小树
【题目链接】 点击打开链接 【思路要点】 规定1,2,...,M1,2,...,M1,2,...,M号节点为叶子结点,最后将答案乘上(NM)(NM)\binom{N}{M}。 考虑树的PruferPruferPrufer序列,叶子结点的编号不会出现在序列中。 用容斥原理计算答案即可, Ans=(NM)∗∑Ni=M(−1)i−M∗(N−Mi−M)∗...原创 2018-08-25 11:36:35 · 303 阅读 · 0 评论 -
【LOJ2463】「2018 集训队互测 Day 1」完美的旅行
【题目链接】点击打开链接【思路要点】考虑计算总共走了 xxx 步,且所有旅行的愉悦值的按位与的结果包含 yyy 的方案数,再简单容斥得到答案。记一次旅行走了 i (i≥1)i\ (i\geq 1)i (i≥1) 步,且其愉悦值包含 yyy 的方案数为 aia_iai 。记 f(x)=∑aixif(x)=\sum a_ix^if(x)=∑aixi ,那么...原创 2019-03-19 14:34:38 · 711 阅读 · 0 评论 -
【校内训练2019-03-22】礼物
【思路要点】特判 N=MN=MN=M 的情况,下令 N>MN>MN>M 。首先通过 PolyaPolyaPolya 计数法将问题转化为不能转动的形式,即枚举置换环长 i (i ∣ N,i ∣ M)i\ (i\ |\ N,i\ |\ M)i (i ∣ N,i ∣&nbs...原创 2019-03-25 13:14:54 · 202 阅读 · 0 评论