hiho 1476 - 矩形计数 容斥】的更多相关文章

题目链接 如图所示,在由N行M列个单位正方形组成的矩形中,有K个单位正方形是黑色的,其余单位正方形是白色的. 你能统计出一共有多少个不同的子矩形是完全由白色单位正方形组成的吗? ---------------------------------------------------------------------------------------------------- 思路: 完全白色矩形数目 = 总个数 - 包含黑块的矩形数目. 包含黑块的矩形数目 = 包含一个黑块 - 包含两个黑块…
LINK:集合计数 容斥简单题 却引出我对广义容斥的深思. 一直以来我都不理解广义容斥是为什么 在什么情况下使用. 给一张图: 这张图想要表达的意思就是这道题目的意思 而求的东西也和题目一致. 特点:求出某个集合恰好为k的个数. 转换:求出集合>=k的个数或者<=k的个数 从而使用广义容斥容斥出来答案. 关于>=k个数 如上图可见 又很多重复的地方 而广义容斥也是在这么多重复的地方使用的 而并非严格>=k的个数. 换个说法 >=k的方案数 可能有一些存在重复 但是其特点是&g…
比较头疼的计数题. 我们发现,放置一个棋子会使得该棋子所在的1个行和1个列都只能放同种棋子. 定义状态 $f_{i,j,k}$ 表示目前已使用了 $i$ 个行,$j$ 个列,并放置了前 $k$ 种棋子的方案数. 假设当前枚举到的是第 $k$ 个棋子,该种棋子有 $num_{k}$ 个. 枚举 $d1,d2$ 表示安排这 $num_{k}$ 个棋子需要用 $d1$ 个行,$d2$ 个列. 可以将 $d1$ 个行和 $d2$ 个列并到一起,这就构成了一个 $d1\times d2$ 的矩形. 在这个…
2839: 集合计数 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 523  Solved: 287[Submit][Status][Discuss] Description 一个有N个元素的集合有2^N个不同子集(包含空集),现在要在这2^N个集合中取出若干集合(至少一个),使得 它们的交集的元素个数为K,求取法的方案数,答案模1000000007.(是质数喔~) Input 一行两个整数N,K Output 一行为答案. Sample Inp…
Description 一个有N个元素的集合有2^N个不同子集(包含空集),现在要在这2^N个集合中取出若干集合(至少一个),使得它们的交集的元素个数为K,求取法的方案数,答案模1000000007.(是质数喔~) Input 一行两个整数N,K Output 一行为答案. Sample Input 3 2 Sample Output 6 HINT [样例说明] 假设原集合为{A,B,C} 则满足条件的方案为:{AB,ABC},{AC,ABC},{BC,ABC},{AB},{AC},{BC} […
题面 传送门(bzoj) 传送门(CF) \(llx\)身边妹子成群,这天他需要从\(n\)个妹子中挑出\(3\)个出去浪,但是妹子之间会有冲突,表现为\(i,j\)之间连有一条边\((i,j)\),定义一种选择方案的权值为\(Ai+Bj+Ck,i<j<k\),求所有选择方案的权值之和 题解 容斥,至少\(0\)条边相连的方案\(-\)至少\(1\)条边相连的方案\(+\)至少\(2\)条边相连的方案\(-\)至少\(3\)条边相连的方案 至少\(3\)条边相连的方案最难数,是个三元环计数,和…
题目描述(权限题qwq) 一个有N个元素的集合有2^N个不同子集(包含空集),现在要在这2^N个集合中取出若干集合(至少一个),使得 它们的交集的元素个数为K,求取法的方案数,答案模1000000007.(是质数喔~) 输入格式 一行两个整数N,K 输出格式 一行为答案 样例输入: 3 2 样例输出: 6 因为集合中的元素是无序的,所以我们随便选\(k\)个作为交集,最后把答案乘上\(\begin{pmatrix}n\\ k\end{pmatrix}\)就好了.选出来\(k\)个之后,问题转化为…
BZOJ 洛谷 图基本来自这儿. 看到这种计数问题考虑容斥.\(Ans=\) 没有限制的正方形个数 - 以\(i\)为顶点的正方形个数 + 以\(i,j\)为顶点的正方形个数 - 以\(i,j,k\)为顶点的正方形个数 + 以\(i,j,k,l\)为顶点的正方形个数,\(i,j,k,l\)都代表不同的坏点. 其实说,\(Ans=\) 至少包含\(0\)个坏点的正方形个数 - 至少包含\(1\)个坏点的正方形个数 + 至少包含\(2\)个的个数 - 至少包含\(3\)个的个数 + 至少包含\(4\…
先说一个简单的题目(题目大意自己看去,反正中文):hihocoder上的:http://hihocoder.com/problemset/problem/1476 然后因为这个n和m的矩阵范围是1000,所以比较简单 然后我们说一下hihocoder上面的做法,首先,这题的做法是http://www.cnblogs.com/heimao5027/p/6738715.html的简化版本,因为颜色只有两种,所以和前面链接给的做法那样,用单调栈维护一下即可. //看看会不会爆int!数组会不会少了一维…
思路: RT 懒得写了 //By SiriusRen #include <cstdio> #include <cstring> #include <algorithm> using namespace std; typedef long long ll; <<)+,mod=; int tmp[N],R[N],fac[N],A[N],B[N],C[N],niB[N]; int pow(ll x,ll y){ ll res=; while(y){ )res=re…
这题72分做法挺显然的(也是我VP的分): 对于n,D<=5000的数据,可以记录f[i][j]表示到第i次随机有j个数字未匹配的方案,直接O(nD)的DP转移即可. 对于D<=300的数据,根据转移系数建立矩阵,跑一遍矩阵快速幂,复杂度O(D3logn),不过要注意卡常数,因为是稀疏矩阵可以判掉无用状态. 对于m较小数据,m=0快速幂,m=1为Dn-A(n,D),m=2暴力讨论一下有没有出现>=1次的值,如果有,唯一出现>=1次的值是出现2次还是3次. 当然还是水平低啊不会正解.…
2839: 集合计数 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 883  Solved: 490[Submit][Status][Discuss] Description 一个有N个元素的集合有2^N个不同子集(包含空集),现在要在这2^N个集合中取出若干集合(至少一个),使得 它们的交集的元素个数为K,求取法的方案数,答案模1000000007.(是质数喔~) Input 一行两个整数N,K Output 一行为答案. Sample Inp…
[BZOJ4005][JLOI2015] 骗我呢(容斥,组合计数) 题面 BZOJ 洛谷 题解 lalaxu #include<iostream> using namespace std; #define MOD 1000000007 #define MAX 3000300 void add(int &x,int y){x+=y;if(x>=MOD)x-=MOD;} int n,m,inv[MAX],jc[MAX],jv[MAX],N,ans; int Calc(int x,in…
题目链接 那场完整的Div2(Div1 ABC)在这儿.. \(Description\) 给定\(n(n\leq 10^6)\),用三种颜色染有\(n\times n\)个格子的矩形,求至少有一行或一列格子同色的方案数. \(Solution\) 求恰好有多少行/列满足同色不好求,但如果某几行/列已经确定同色,这些行/列外任意选择,即至少多少行/列满足,那么很好求. 容斥.设\(f(i,j)\)表示至少有\(i\)行\(j\)列同色的方案数,则\(ans=\sum_{0\leq i\leq n…
[BZOJ2839]集合计数(容斥,动态规划) 题面 BZOJ 权限题 Description 一个有N个元素的集合有2^N个不同子集(包含空集),现在要在这2^N个集合中取出若干集合(至少一个),使得 它们的交集的元素个数为K,求取法的方案数,答案模1000000007.(是质数喔~) Input 一行两个整数N,K Output 一行为答案. Sample Input 3 2 Sample Output 6 题解 比较简单的容斥吧.. 设\(f[i]\)表示至少有\(i\)个相同元素的方案数…
dalao教导我们,看到计数想容斥……卡常策略:枚举顺序.除去无效状态.(树结构) #include <cstdio> #include <cstring> #include <algorithm> typedef long long LL; ; LL f[N][N]; int n,m,d[N][N],full; bool yeah[N]; int st[N],cnt; struct V{ int to,next; }c[N<<]; int head[N],…
[BZOJ2969]矩形粉刷 Description 为了庆祝新的一年到来,小M决定要粉刷一个大木板.大木板实际上是一个W*H的方阵.小M得到了一个神奇的工具,这个工具只需要指定方阵中两个格子,就可以把这两格子为对角的,平行于木板边界的一个子矩形全部刷好.小M乐坏了,于是开始胡乱地使用这个工具. 假设小M每次选的两个格子都是完全随机的(方阵中每个格子被选中的概率是相等的),而且小M使用了K次工具,求木板上被小M粉刷过的格子个数的期望值是多少. Input 第一行是整数K,W,H Output 一…
[BZOJ2839]集合计数 Description 一个有N个元素的集合有2^N个不同子集(包含空集),现在要在这2^N个集合中取出若干集合(至少一个),使得它们的交集的元素个数为K,求取法的方案数,答案模1000000007.(是质数喔~) Input 一行两个整数N,K Output 一行为答案. Sample Input 3 2 Sample Output 6 HINT [样例说明]假设原集合为{A,B,C}则满足条件的方案为:{AB,ABC},{AC,ABC},{BC,ABC},{AB…
Online Judge:Hdu5155 Label:思维题+容斥,计数Dp 题面: 题目描述 给定一个大小为\(N*M\)的神奇盒子,里面每行每列都至少有一个钻石,问可行的排列方案数.由于答案较大,输出对\(1e9+7\)取模后的结果. 输入 多组数据.每组数据读入两个整数\(N,M\) \(0≤N,M≤50\) 输出 每组数据输出一行表示答案. 样例 Input 1 1 2 2 2 3 Output 1 7 25 Hint There are 7 possible arrangements…
LINK:矩阵填数 刚看到题目的时候感觉是无从下手的. 可以看到有n<=2的点 两个矩形. 如果只有一个矩形 矩形外的方案数容易计算考虑 矩形内的 必须要存在x这个最大值 且所有值<=x. 直接计算是不易的 需要讨论到底哪个位置有最大值 然后还有重复 很繁琐.可以直接容斥 可以求出<=x的方案数 <=x-1的方案数也可以求出 做差即可得到存在x出现的方案数. 考虑两个矩形 如果不交 那么显然是各算各的 如果相交 讨论相交的这部分到底存在x 然后进一步的讨论从而计算答案. 可以发现这…
集合计数 内存限制:128 MiB 时间限制:1000 ms 标准输入输出     题目描述 一个有N个元素的集合有2^N个不同子集(包含空集),现在要在这2^N个集合中取出若干集合(至少一个),使得它们的交集的元素个数为K,求取法的方案数,答案模1000000007.(是质数喔~) 输入格式 一行两个整数N,K 输出格式 一行为答案. 样例 样例输入 3 2 样例输出 6 数据范围与提示 样例说明 假设原集合为{A,B,C} 则满足条件的方案为:{AB,ABC},{AC,ABC},{BC,AB…
洛谷题面传送门 看到图计数的题就条件反射地认为是不可做题并点开了题解--实际上这题以我现在的水平还是有可能能独立解决的( 首先连通这个条件有点棘手,我们尝试把它去掉.考虑这题的套路,我们设 \(f_n\) 表示 \(n\) 个点的有标号 DAG 个数,\(g_n\) 表示 \(n\) 个点的有标号且弱联通的 DAG 个数,那么根据 \(\exp\) 式子的计算方式我们可以列出 \(f,g\) 生成函数之间的 exp 关系,又因为这题带标号,所以有: Trick 1. 对于有标号图连通图计数问题,…
Description 上帝说,不要圆,要方,于是便有了这道题.由于我们应该方,而且最好能够尽量方,所以上帝派我们来找正方形 上帝把我们派到了一个有N行M列的方格图上,图上一共有(N+1)×(M+1)个格点,我们需要做的就是找出这些格点形 成了多少个正方形(换句话说,正方形的四个顶点都是格点).但是这个问题对于我们来说太难了,因为点数太多 了,所以上帝删掉了这(N+1)×(M+1)中的K个点.既然点变少了,问题也就变简单了,那么这个时候这些格点组成 了多少个正方形呢? Input 第一行三个整数…
题目大意 定义一个序列的权值为:把所有相邻的相同的数合并为一个集合后,所有集合的大小的乘积. 特别的,第一个数和最后一个数是相邻的. 现在你有 \(n\) 种数,第 \(i\) 种有 \(c_i\) 个.求所有不同的序列的权值的和. \(n\leq 50,c_i\leq 100\) 题解 考虑第一个数和最后一个数不相邻时怎么做. 记 \(g_{i,j}\) 为出现了 \(i\) 次的数分成 \(j\) 个集合,所有集合大小的乘积的和. \[ g_{i,j}=\sum_{k=1}^ig_{i-k,…
传送门:https://www.lydsy.com/JudgeOnline/problem.php?id=3782 有部分分的传送门:https://www.luogu.org/problemnew/show/P4478 看到标题开始还以为是AHOI的小雪和小可可…… 题解:乍一看会40pts:测试点1.2:n,m<=1000的直接O(nm)DP:测试点3.4:没有障碍物直接C(n+m,n),然后p=1e6+3是质数可以直接取模. 想了几分钟会60pts:测试点5.6:模数可以拆成几个不超过1e…
题意 题目链接 分析 先考虑没有障碍怎么做,定义 f(i,j,k) 每一维走了 i,j,k 位的方案数,转移乘个组合数即可. 现在多了一些障碍,考虑容斥.实际我们走过的点都有严格的大小关系,所以先把所有障碍点按维度排序,然后定义 g(i,j) 表示走到 i 这个障碍点,走了 j 个障碍点的方案数,利用 f 转移.实际第二维在转移时乘以-1就可以忽略. 复杂度 \(O(o^2)\) 开始写的刷表发现有问题,因为刷表时的所有状态都和 (n,m,r) 有关,所以中间的状态不能表示和终态一样的意义. 代…
题目 一个有 \(N\) 个 元素的集合有 \(2^N\) 个不同子集(包含空集), 现在要在这 \(2^N\) 个集合中取出若干集合(至少一个), 使得它们的交集的元素个数为 \(K\) ,求取法的方案数,答案模 \(1000000007\) . \((1 \le N \le 10^6, 0 \le K \le N)\) 题解 又是一道 裸的 广义容斥定理 还没这道题难qwq 广义容斥定理 (二项式反演) : \[\displaystyle b_k = \sum_{i=k}^n \binom…
这个题是刚才刷的第一道反演题的拓展版,加上一个容斥就可以了 #include<cstdio> #include<algorithm> using std::min; ; int cnt,a,b,c,d,k; long long ans; bool vis[maxn]; int mu[maxn],sum[maxn]; long long prim[maxn]; inline long long read() { ,f=;char ch=getchar(); ;ch=getchar()…
9个月的心头大恨终于切掉了!!!! 非常好的一道题,不知为何uoj上被点了70个差评. 题目链接: http://uoj.ac/problem/214 题目大意: 请自行阅读. 题解: 官方题解讲得相当清楚,这里补充一下自己的一些理解. 首先来看\(O(2^{n-m}\times poly(n,m))\)的做法. 一种理解方式是官方题解. 设\(s\)为总共的课程个数(\(n\)个字符串的总长度),\(p(S)\)表示结尾位置为集合\(S\)的串全部匹配一共需要完成多少个不同的课程.设\(f(t…
Description Solution 记\(N=min(n,m,l)\) 首先考虑容斥,记\(f(i)\)为至少有i个位置是极大的,显然极大的位置数上界是N. 那么显然\(Ans=\sum\limits_{i=k}^{N}(-1)^{i-k}f(i){i \choose k}\) 现在来计算\(f\) 我们考虑立方体中哪些位置是极大的,显然这些极大的位置三维坐标都互不相同,然后剩下的怎么选概率都是一样的. 将这i个位置按值从小到大排起来,那么有序的选出\(i\)个位置的方案数就是\(n^{i…