容斥原理
文章平均质量分 56
DZYO
Never stop
展开
-
HDU 5852:Intersection is not allowed!(行列式+逆元求组合数)
Description 有K个棋子在一个大小为N×N的棋盘。一开始,它们都在棋盘的顶端,它们起始的位置是 (1,a1),(1,a2),...,(1,ak) ,它们的目的地是 (n,b1),(n,b2),...,(n,bk)。 一个位于 (r,c) 的棋子每一步只能向右走到 (r,c+1) 或者向下走到 (r+1,c) 。 我们把 i 棋子从 (1,ai)原创 2017-03-28 19:19:25 · 722 阅读 · 0 评论 -
BJ模拟:and(容斥)
传送门题解: 我反过来用类似记忆化搜索的方式实现的,具体看代码。#include <bits/stdc++.h>using namespace std;typedef long long LL;typedef pair <int,int> pii;const int RLEN=1<<18|1;inline char nc() { ...原创 2018-04-10 22:45:08 · 275 阅读 · 0 评论 -
HDU4624:Endless Spin(min-max 容斥)
传送门题解:利用期望公式: E[max{S}]=∑T∈S(−1)|T|+1E[min{T}]E[max{S}]=∑T∈S(−1)|T|+1E[min{T}]E[\max\{S\}] = \sum_{T \in S} (-1)^{|T|+1} E[\min\{T\}]我们对于每个子集算期望, 容易知道为n∗(n+1)2sumn∗(n+1)2sum\frac{\frac{n*(n+1)}...原创 2018-05-02 20:57:06 · 1285 阅读 · 0 评论 -
51Nod1355:斐波那契的最小公倍数 (min-max容斥+Mobius反演)
传送门题解: 对于fib数列有gcd(i,j)=fgcd(i,j)gcd(i,j)=fgcd(i,j)\gcd(i,j) = f_{\gcd(i,j)}(可用归纳法证明)。 那么对于gcd(f{T})gcd(f{T})\gcd(f_{\{T\}}) 显然等于fgcd{T}fgcd{T}f_{\gcd\{T\}}。怎么求lcm? 直接min-max对指数容斥即可,易得: lcmf{T}...原创 2018-05-09 21:28:23 · 764 阅读 · 1 评论 -
Atcoder ARC093F : Dark Horse
传送门题解: 建出二叉树,我们现在要让mmm个点不以最小值出现在从1出现的位置往上的lognlogn\log n 棵子树中。考虑容斥,记fifif_i表示非法子树(子树中最小值为m中的一个)的状态。 我们从大到小转移很容易DP出fff,然后就做完了。#include <bits/stdc++.h>using namespace std;const int N=...原创 2018-07-01 21:33:58 · 455 阅读 · 0 评论 -
Codeforces 995F : Cowmpany Cowmpensation(容斥)
传送门题解: 直接DP出fnfnf_n表示当前最大值为nnn的方案数。然后gngng_n表示最大值为nnn,且种类数也为nnn的方案数。确定最大值,之后的等式显然: fn=∑i=1n(n−1i−1)gifn=∑i=1n(n−1i−1)gif_n =\sum_{i=1}^n \binom{n-1}{i-1} g_i反演出ggg后用组合数算方案即可。#include &...原创 2018-07-02 21:27:39 · 457 阅读 · 0 评论 -
雅礼集训7.10:attack(容斥)
题意: 题解: 对于任意矩阵都有 1*1 - 1*2 - 2*1 + 2*2 = 1。我们用这个来做容斥就好了。对于每个点被覆盖的次数,可以用单调队列。#include &amp;lt;bits/stdc++.h&amp;gt;using namespace std;typedef long long LL;const int N=2e3+50, mod=998244353;inli...原创 2018-07-10 17:56:03 · 427 阅读 · 0 评论 -
BZOJ4833: [Lydsy1704月赛]最小公倍佩尔数(min-max容斥)
传送门题解: fn=2fn−1+fn−2fn=2fn−1+fn−2f_n = 2f_{n-1}+f_{n-2} 有一个结论是形如fn=afn−1+bfn−2fn=afn−1+bfn−2f_n = af_{n-1} + bf_{n-2},有gcd{fx,fy}=fgcd{x,y}gcd{fx,fy}=fgcd{x,y}\gcd\{f_x,f_y\} = f_{\gcd\{x,y\}}。...原创 2018-07-23 16:29:01 · 415 阅读 · 0 评论 -
Codechef:Counting D-sets/CNTDSETS(容斥)
传送门题解:平移的限制相当于强制每一维存在坐标0。距离为D的限制相当于存在一维的最大值为D。考虑计算最大值小等D的方案数减去小等于D-1的方案数,限制只有每一维都存在0,这个用组合数来容斥一下就行了,时间复杂度O(Tnlogn)O(T n \log n)O(Tnlogn)。#include <bits/stdc++.h>using namespace std;cons...原创 2018-10-12 15:28:08 · 333 阅读 · 0 评论 -
集训队作业2018:Z-function(DP)
传送门题解:枚举相同位置的长度是多少,然后可以设计一个DP,fi,jf_{i,j}fi,j表示第iii位,相同状态为jjj的方案数(注意这里要带个-1的系数方便容斥),然后发现这个状态数很少,就可以过了。#include <bits/stdc++.h>using namespace std;typedef unsigned long long ULL;const in...原创 2018-11-07 19:10:56 · 614 阅读 · 0 评论 -
集训队作业2018: 青春猪头少年不会梦到兔女郎学姐(多限制容斥)
前言:虽然这道题的名字有点那啥,但是题还是很好的,听说是某道原题的加强版。题意:给定nnn种颜色的球,第iii种颜色的球数量为AiA_iAi个,保证∑i=1nAi≤2∗105\sum_{i=1}^n A_i \le 2*10^5∑i=1nAi≤2∗105,对于这所有(∑Ai)!∏Ai!\frac{(\sum_{A_i})!}{\prod A_i!}∏Ai!(∑Ai)!的排列,一...原创 2018-11-16 14:19:53 · 2120 阅读 · 1 评论 -
HDU4336:Card Collector(min-max 容斥)
传送门题解: 利用min−maxmin−max\min-\max期望公式: E[max{Xi}]=∑S′∈S(−1)|S′+1|min{Xi∈S′}E[max{Xi}]=∑S′∈S(−1)|S′+1|min{Xi∈S′}E[\max \{X_i\}] = \sum_{S' \in S} (-1)^{|S'+1|} \min \{X_i \in S'\}2n2n2^n枚举即可。#...原创 2018-04-08 14:11:48 · 237 阅读 · 0 评论 -
BZOJ4455: [Zjoi2016]小星星(容斥)
传送门题解: 我们能用O(n2|S|)O(n2|S|)O(n^2 |S|)的时间统计出所有点都是颜色集合SSS中的一个颜色的方案树。然后2n2n2^n枚举SSS做容斥即可。 时间复杂度O(3nn2)O(3nn2)O(3^n n^2)。#include <bits/stdc++.h>using namespace std;typedef long long LL;c...原创 2018-04-08 11:32:02 · 221 阅读 · 0 评论 -
BZOJ:2440: [中山市选2011]完全平方数(容斥原理)
传送门题意:给你一个数k,求从1开始第k个非完全平方数。定义一个数为完全平方数当且仅当这个数质因数分解后存在二次项。 如: 4=224=2^2为完全平方数,30=2∗3∗530=2*3*5为非完全平方数。题解: 1.从1开始第k个非完全平方数⇔\Leftrightarrowmin(n)min(n),比nn小的非完全平方数有k个。有了这个性质,可以二分。 2.nn小的非完全平方数个数=∑i=1n原创 2017-07-23 16:59:01 · 528 阅读 · 0 评论 -
BZOJ3566: [SHOI2014]概率充电器(概率DP+容斥)
传送门题意: 一棵树上每条边有连通概率,每个点有通电概率,点的通电可以通过边传递,求期望通电的点的次数。题解: 好题啊。。首先由期望的线性性可以知道答案就是每个点连通的概率相加。现在考虑如何求概率。 首先,以任意点为根节点DP可以得出仅考虑一个点的子树这个点的连通概率。考虑怎么统计父节点。因为是从根节点向下更新,而根节点的连通概率已经知道,可以假设现在父节点的连通概率是已知的。由概率公式P(A原创 2017-11-14 08:53:42 · 291 阅读 · 0 评论 -
TCO13 2A 1000:The Powers(容斥)
题解:Ay1=By2⇒rm1y1=rm2y2Ay1=By2⇒rm1y1=rm2y2A^{y_1}=B^{y_2} \Rightarrow r^{m_1y_1}=r^{m_2y_2}于是可以先将rrr分组,第iii组为ri≤A,ri+1>Ari≤A,ri+1>Ar^i \le A ,r^{i+1} \gt A.具体分组方法我采用的是二分+容斥,先把所有数放入对应的桶中然后减去...原创 2018-02-26 22:41:00 · 229 阅读 · 0 评论 -
PE 559:Permuted Matrices(容斥,多项式求逆)
传送门题意: 有一个r∗nr∗nr*n的矩阵TTT和一个整数kkk。 矩阵的行编号1~r1~r1\text{~}r, 列编号1~n1~n1\text{~} n。 我们说jjj(1≤j<n)(1≤j<n)(1 ≤ j< n)是和谐的, 当且仅当∀1≤i≤r,Ai,j<Ai,j+1∀1≤i≤r,Ai,j<Ai,j+1∀1 ≤ i ≤ r, A_{i,j} < A_{i,...原创 2018-02-27 16:43:24 · 348 阅读 · 2 评论 -
TCO13 2B 1000:LitPaneles(容斥)
题解: 要统计得不重不漏,可以考虑每一种方案的最终状态,必然会被一个长方形卡住,那么我们枚举这个长方形的长和宽。现在问题转化为在长方形中选若干个点,满足可以存在于两个x∗yx∗yx*y的长方形中,而且四周的点必须要选,这个可以枚举两个长方形的位置,必然是一个左上一个右下,或者一个左下一个右上,分别DP最后减掉同时在两个长方形中的即可。const int mod=1e9+7;inli...原创 2018-02-27 18:29:37 · 191 阅读 · 0 评论 -
AGC005D : ~K Perm Counting(容斥)
传送门题解: 容斥,记fifif_i表示有iii个位置不满足的方案数,那么答案为∑ni=0(−1)ifi∑i=0n(−1)ifi\sum_{i=0}^n (-1)^i f_i在\mathchoicemodk\mathchoicemodk\mod k意义下,相同的位置做DPDPDP,最后再背包合并即可得到fifif_i#include <bits/stdc++.h>u...原创 2018-02-27 19:14:24 · 381 阅读 · 0 评论 -
Topcoder SRM551 Div 1 1000:SweetFruits(矩阵树+容斥)
题解:考虑枚举哪几个水果是甜的。 发现如果枚举的数量一样,那么对答案的贡献也一样。那么可以根据枚举数量来一起处理。枚举完数量kkk之后,甜与半甜的不连边,然后跑矩阵树,得到小等于kkk的甜的水果的生成树数量。 因为之前的已经处理过,直接减掉就好。 注意减去的时候要减去组合数,因为这k个中任意组合都会被统计。之后问题变为了数量kkk, 值小等于vvv的个数,这个直接折半就行了。...原创 2018-02-27 22:05:13 · 455 阅读 · 0 评论 -
雅礼2017 WC模拟(1.15) :jdt(容斥)
题意: 定义F(n,k)F(n,k)F(n,k)表示将nnn拆成kkk个不同正整数乘积的方案(一种方案的另一种排列仍是同一种方案)。 求f(n!,k)(n≤10000,k≤30)(mod1e9+7)f(n!,k)(n≤10000,k≤30)(mod1e9+7)f(n!,k)( n\le 10000, k \le 30) \pmod {1e9+7}。题解: 首先忽略到同一种排列的限制,最后...原创 2018-03-19 15:45:40 · 340 阅读 · 0 评论 -
BJ模拟: 期望(容斥)
题意: 有nnn个变量x1~nx1~nx_{1\text{~}n},每个变量取值在[0,1][0,1][0,1]之间随机, 设s=⌊∑ni=1xi⌋s=⌊∑i=1nxi⌋s = \lfloor \sum_{i=1}^nx_i \rfloor,求smsms^m的期望 (mod998244353)(mod998244353)\pmod {998244353}。题解: 不妨设 yiyiy_i ...原创 2018-03-25 18:42:00 · 398 阅读 · 0 评论 -
集训队作业2018: 喂鸽子(min-max容斥)
题意:小Z是养鸽子的人。一天,小Z给鸽子们喂玉米吃。一共有n只鸽子,小Z每秒会等概率选择一只鸽子并给他一粒玉米。一只鸽子饱了当且仅当它吃了的玉米粒数量≥k≥k≥k。 小Z想要你告诉他,期望多少秒之后所有的鸽子都饱了。题解:min-max容斥枚举下集合大小,FFT预处理一下系数算min的期望即可。#pragma GCC optimize(2)#include <bits/stdc++...原创 2019-01-15 16:09:53 · 875 阅读 · 0 评论