BZOJ 4710 容斥原理+dp】的更多相关文章

//By SiriusRen #include <cstdio> using namespace std; int n,m,a[1005]; typedef long long ll; ll C[2005][2005],f[2005][2005],g[2005],mod=1000000007ll; int main(){ scanf("%d%d",&n,&m); for(int i=1;i<=m;i++)scanf("%d",&am…
4710: [Jsoi2011]分特产 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 99  Solved: 65 Description JYY 带队参加了若干场ACM/ICPC 比赛,带回了许多土特产,要分给实验室的同学们. JYY 想知道,把这些特产分给N 个同学,一共有多少种不同的分法?当然,JYY 不希望任 何一个同学因为没有拿到特产而感到失落,所以每个同学都必须至少分得一个特产. 例如,JYY 带来了2 袋麻花和1 袋包子,分给A 和…
3622: 已经没有什么好害怕的了 题意:和我签订契约,成为魔法少女吧 真·题意:零食魔女夏洛特的结界里有糖果a和药片b各n个,两两配对,a>b的配对比b>a的配对多k个学姐就可能获胜,求方案数 PS:洛谷月赛拿到了一个Modoka的挂件O(∩_∩)O哈哈~ 总的方案数就是\(n!\),相当于一个做全排列 恰好多k个,那么就是a>b的有\(k=k+\frac{n-k}{2}\)个 恰好\(\rightarrow\)容斥 \[ =\ \ge k个的配对方案数\ -\ \ge k+1个\ +…
4710: [Jsoi2011]分特产 题意:m种物品分给n个同学,每个同学至少有一个物品,求方案数 对于每种物品是独立的,就是分成n组可以为空,然后可以用乘法原理合起来 容斥容斥 \[ 每个同学至少一个=所有方案数-\ge 1个同学没有+\ge 2 个同学没有-... \] \(\ge i\)个同学没有,我们拿出来i个同学\(\binom{n}{i}\)个方案,剩下就是每种物品分成\(n-i\)组再乘起来罢了... #include <iostream> #include <cstdi…
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1042 [题目大意] 硬币购物一共有4种硬币.面值分别为c1,c2,c3,c4. 某人去商店买东西,去了tot次.每次带di枚ci硬币, 买si的价值的东西.请问每次有多少种付款方法. [题解] 我们首先预处理出没有限制情况下不同容量的方案数,等价于一般的背包问题 之后对于硬币数量限制问题考虑容斥, 方案数等于无限制方案数-面值为c1的硬币超出限制的方案数-面值为c2的硬币超出限制的方…
当然是容斥啦. 用dp预处理出\( f[i] \),表示在\( i \)价格时不考虑限制的方案数,转移方程是\( f[i]+=f[i-c[j]] \),用状压枚举不满足的状态容斥一下即可. #include<iostream> #include<cstdio> using namespace std; const long long N=100005; long long c[10],T,d[10],s,f[N],ans; long long read() { long long…
2560: 串珠子 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 757  Solved: 497[Submit][Status][Discuss] Description 铭铭有n个十分漂亮的珠子和若干根颜色不同的绳子.现在铭铭想用绳子把所有的珠子连接成一个整体. 现在已知所有珠子互不相同,用整数1到n编号.对于第i个珠子和第j个珠子,可以选择不用绳子连接,或者在ci,j根不同颜色的绳子中选择一根将它们连接.如果把珠子看作点,把绳子看作边,将所…
被空间卡的好惨啊---- 参考:http://blog.csdn.net/coldef/article/details/70305596 容斥,\( ans=ans_{没有限制}-ans{没有质数} \) 动规递推式,\( f[i][j]=\sum_{k=0}^{p-1}f[i-1][k]*cnt[(i-j+p)%p] \),\( cnt[i] \)表示\( %p==i \)的数,注意计算第二个\( ans \)的时候要用筛子去掉质数 因为\( n\leq 10^9 \),所以选择矩阵乘法加速递…
洛谷的传送门 bzoj的传送门 题意简述:在DAG中增加一条有向边,然后询问新图中一共 有多少个不同的子图为"树形图". 解法:容斥原理+dp,先考虑没有环的情况,经过尝试不难发现总的有向树个数就等于所有点的度数的乘积.而现在有了环,显然我们应该减去算多了的值.这样的话只需要简单的容斥原理就行了. 代码如下: #include<bits/stdc++.h> #define mod 1000000007 #define N 200005 #define M 400005 #d…
题目链接:http://codeforces.com/problemset/problem/245/H 题目大意:给你一个字符串s,对于每次查询,输入为一个数对(i,j),输出s[i..j]之间回文串的个数. 容斥原理: dp[i][j] = dp[i+1][j]+dp[i][j-1]-dp[i+1][j-1]; if( str[i]==str[j] 并且 str[i+1..j-1]是回文串 ) dp[i][j]++; 代码: #include <cstdio> #include <cs…