容斥
EMber _
人但有追求,世界亦会让路。
展开
-
CQOI2012局部极小值 BZOJ2669 状压DP+容斥
题意:给定一个n∗m的矩阵,标记出其中的局部极小值,要求填入1…n∗m,求方案数 这题我刚看还以为是搜索之类的。。后来看见数据范围才发现是DP。。没想到要用容斥。 切了一下午,题解都没听。。上去讲了一下自己的想法就没听了。。当时感觉快改出来了。。结果吗。。赫赫,因为没有清零而导致tle我是绝对不会告诉你们滴~~ 推荐一下PO姐的解法,讲的很明了,,这里也会有部分借鉴== http://blo原创 2016-08-15 20:10:34 · 535 阅读 · 0 评论 -
JZOJ5429. 【NOIP2017提高A组集训10.27】排列 DP+容斥
Description有两个长度为n的排列A和B,定义排列的价值f(A,B)为所有满足A[i]>B[i]的位置i的数量。 现给出n,A,B和S,其中A和B中有一些位置的数未知,问有多少种可能的填数的方案使得f(A,B)=SInput第一行两个整数n和S 第二行n个数表示排列A 第三行n个数表示排列B 其中A和B中某些位置是0表示当前位置上的数还未确定,保证不存在一个位置i满足A[i]=0且B原创 2017-10-27 20:05:36 · 460 阅读 · 0 评论 -
bzoj2839集合计数 容斥原理
题意:一个有N个元素的集合有2^N个不同子集(包含空集),现在要在这2^N个集合中取出若干集合(至少一个),使得 它们的交集的元素个数为K,求取法的方案数,答案模1000000007。明显容斥啦。 应该是选择k个-选择k+1个+选择k+2….. 那么我们设f[i]表示已经选择k个作为交集,剩下n-k个如何选择的方案。 那么明显有f[i]=2^{2^(n-i)}-1,由于已经选择了k个,剩下n原创 2017-10-01 09:22:27 · 342 阅读 · 0 评论 -
jzoj5347. 【NOIP2017提高A组模拟9.5】遥远的金字塔 容斥
题意:给出n,m,总共有n+1个位置,第n+1个位置上固定为m,要求在前n个位置上填不大于m的正整数,然后在数轴上的0点有一个球,第i次走的步数可以是第i个位置上的数或者其相反数(后退)。要求最后能走到1.问有多少种方法。我仿佛是个丝薄。。明明这题更水偏偏要去搞DP。。 可以手玩或者通过扩欧证明得一个合法的序列一定他的总gcd=1。 那么我们可以发现,要求总序列gcd!=1,肯定是整个数列都是m原创 2017-09-06 17:25:34 · 351 阅读 · 0 评论 -
bzoj4710 [Jsoi2011]分特产 容斥原理
首先知道隔板法可以算出有空的方案。 那么就可以把题目转化为总方案书-不合法的方案数,容斥以后即: 至少0个人为空-至少一个人为空+至少。。。。。 那么强制不选i个盒子,算出方案数以后就是只有n-i个人有的方案。 但是并不能确定是哪i个人没被分配,所以最后乘上一个C(n,i)#include<cstdio>#include<algorithm>#include<cstring>#defi原创 2017-08-13 23:56:04 · 297 阅读 · 0 评论 -
bzoj2440 [中山市选2011]完全平方数 反演容斥+二分
题意:求第k个非完全平方数。 二分一下前mid中有多少个非完全平方数,判断用容斥做,通过反演得答案就是n-奇数个质数的平方的倍数的个数+偶数个质数的平方的倍数的个数 那么ans=Σμ[i]*(n/i^2) (i<=sqrt(n))#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#include<ios原创 2017-04-12 22:22:28 · 251 阅读 · 0 评论 -
【GDOI2017模拟一试4.11】颜色树
明明这么简单的题目调的我死去活来的。。 题意:给你一棵树,树上的点都有一个颜色的属性,然后,问你找一条路径,能经过所有颜色,有多少种方案。分析:xjb容斥一波,暴力枚举那些点不被选择,然后dfs一遍,求出当前图的路径数量,乘以容斥系数累加起来就好了。#include<cstdio> #include<cstring>#include<algorithm>#include<iostream>原创 2017-04-11 16:17:36 · 337 阅读 · 0 评论 -
bzoj1008 容斥
题意就不说了。水的一匹的容斥,直接做。m^n-m*(m-1)^(n-1),正难则反。。结果输出lld前面手抖少打了个%。。#include<cstdio>#include<cmath>#include<cstring>#include<algorithm>#define fo(i,a,b) for(int i=a;i<=b;i++)#define fd(i,a,b) for(int i=a原创 2017-02-14 21:29:41 · 242 阅读 · 0 评论 -
bzoj2396 Cirno的完美算数教室 容斥
Description~Cirno发现了一种baka数,这种数呢~只含有2和⑨两种数字~~ 现在Cirno想知道~一个区间中~~有多少个数能被baka数整除~ 但是Cirno这么天才的妖精才不屑去数啦 只能依靠聪明的你咯。 Input一行正整数L R ( 1 < L < R < 10^10) Output一个正整数,代表所求的答案 Sample Input1 100 Sample O原创 2017-02-17 20:04:54 · 340 阅读 · 0 评论 -
bzoj1042 dp+容斥
Description 硬币购物一共有4种硬币。面值分别为c1,c2,c3,c4。某人去商店买东西,去了tot次。每次带di枚ci硬币,买s i的价值的东西。请问每次有多少种付款方法。Input 第一行 c1,c2,c3,c4,tot 下面tot行 d1,d2,d3,d4,s,其中di,s<=100000,tot<=1000Output 每次的方法数Sample Input1 2 5 10原创 2017-02-16 16:00:48 · 217 阅读 · 0 评论 -
bzoj3198 [Sdoi2013]spring 哈希表+容斥
题意:有n个六元组,给出一个数k,要求这n个组中有多少对之间有k元是相同的。/这种玩意儿一眼容斥啊。 首先2^6枚举是哪k位,然后用hash求出在这种情况下有多少对是相同的,设为f[i]. 那么答案就是f[k]∗Ckk−f[k+1]∗Ckk+1....f[k]*C_{k}^{k}-f[k+1]*C_{k+1}^{k}.... 注意到容斥系数是组合数,原因是对应i和i+1会有交集,明显不能只是正原创 2017-10-28 10:58:18 · 237 阅读 · 0 评论