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",&a[i]);
for(int i=1;i<=2000;i++){
C[i][0]=C[i][i]=1ll;
for(int j=1;j<i;j++)
C[i][j]=(C[i-1][j-1]+C[i-1][j])%mod;
}
for(int i=1;i<=n;i++)f[0][i]=1;
for(int i=1;i<=m;i++)
for(int j=1;j<=n;j++)
f[i][j]=f[i-1][j]*C[a[i]+j-1][j-1]%mod;
for(int i=1;i<=n;i++){
g[i]=f[m][i];
for(int j=1;j<i;j++)
g[i]=((g[i]-C[i][j]*g[j])%mod+mod)%mod;
}
printf("%lld\n",g[n]);
}
二刷
2018.8.1
//By SiriusRen
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int p=,N=;
int n,m,fac[N],inv[N],tot,a[N],f[N],finv[N],ans;
int C(int x,int y){return fac[x]*finv[y]%p*finv[x-y]%p;}
int pow(int a,int b){int r=;for(;b;b>>=,a=a*a%p)if(b&)r=r*a%p;return r;}
signed main(){
fac[]=fac[]=inv[]=inv[]=finv[]=finv[]=;
scanf("%lld%lld",&n,&m);
for(int i=;i<=m;i++)scanf("%lld",&a[i]),tot+=a[i];
for(int i=;i<=tot;i++)
fac[i]=fac[i-]*i%p,inv[i]=(p-p/i*inv[p%i])%p,finv[i]=finv[i-]*inv[i]%p;
for(int i=;i<=n;i++){
f[i]=;
for(int j=;j<=m;j++)f[i]=f[i]*C(a[j]+i-,i-)%p;
}
for(int i=;i<n;i++)ans=(ans+(i&?-:)*C(n,i)*f[n-i])%p;
printf("%lld\n",(ans+p)%p);
}
BZOJ 4710 容斥原理+dp的更多相关文章
- 【BZOJ 4710】 4710: [Jsoi2011]分特产 (容斥原理)
4710: [Jsoi2011]分特产 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 99 Solved: 65 Description JYY 带 ...
- BZOJ 3622: 已经没有什么好害怕的了 [容斥原理 DP]
3622: 已经没有什么好害怕的了 题意:和我签订契约,成为魔法少女吧 真·题意:零食魔女夏洛特的结界里有糖果a和药片b各n个,两两配对,a>b的配对比b>a的配对多k个学姐就可能获胜,求 ...
- BZOJ 4710: [Jsoi2011]分特产 [容斥原理]
4710: [Jsoi2011]分特产 题意:m种物品分给n个同学,每个同学至少有一个物品,求方案数 对于每种物品是独立的,就是分成n组可以为空,然后可以用乘法原理合起来 容斥容斥 \[ 每个同学至少 ...
- BZOJ 1042:[HAOI2008]硬币购物(容斥原理+DP)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1042 [题目大意] 硬币购物一共有4种硬币.面值分别为c1,c2,c3,c4. 某人去 ...
- bzoj 1042: [HAOI2008]硬币购物【容斥原理+dp】
当然是容斥啦. 用dp预处理出\( f[i] \),表示在\( i \)价格时不考虑限制的方案数,转移方程是\( f[i]+=f[i-c[j]] \),用状压枚举不满足的状态容斥一下即可. #incl ...
- BZOJ 2560(子集DP+容斥原理)
2560: 串珠子 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 757 Solved: 497[Submit][Status][Discuss] ...
- bzoj 4818: [Sdoi2017]序列计数【容斥原理+dp+矩阵乘法】
被空间卡的好惨啊---- 参考:http://blog.csdn.net/coldef/article/details/70305596 容斥,\( ans=ans_{没有限制}-ans{没有质数} ...
- 2018.07.13 [HNOI2015]落忆枫音(容斥原理+dp)
洛谷的传送门 bzoj的传送门 题意简述:在DAG中增加一条有向边,然后询问新图中一共 有多少个不同的子图为"树形图". 解法:容斥原理+dp,先考虑没有环的情况,经过尝试不难发现 ...
- [CF245H] Queries for Number of Palindromes (容斥原理dp计数)
题目链接:http://codeforces.com/problemset/problem/245/H 题目大意:给你一个字符串s,对于每次查询,输入为一个数对(i,j),输出s[i..j]之间回文串 ...
随机推荐
- parseint和isNaN用法
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- 配置DCOM中excel权限
ASP.NET 导出Excel 错误解决备忘 网站项目要用到导出为excel文件的功能,程序运行时报错:"检索 COM 类工厂中 CLSID 为{000-0000-0000-C0046} 的 ...
- 01--数据结构——动态链表(C++)
数据结构——动态链表(C++) 定义一个节点: [cpp] view plain copy print? #include <iostream> using namespace s ...
- Win7系统下调整硬盘分区大小给C盘更多的空间
电脑安装了很多程序,C盘空间越来越小了.如何给C盘调整更多的空间,其实只要调整硬盘分区大小便可解决这个问题,下面有个小技巧,需要的朋友照做就可以了 Win7系统下如何调整硬盘分区大小,以前装系统的时候 ...
- 什么时候用created,什么时候用mounted
created 在实例创建完成后被立即调用.在这一步,实例已完成以下的配置:数据观测 (data observer), 属性和方法的运算,watch/event 事件回调.然而,挂载阶段还没开始,$e ...
- HDU-6217 BBP Formula 脑洞
题目链接:https://cn.vjudge.net/problem/HDU-6217 题意 已知: \[ \pi = \sum_{k=0}^{\infty }\frac{1}{16^{k}}(\fr ...
- nyoj399-整除个数
整除个数 时间限制:3000 ms | 内存限制:65535 KB 难度:1 描述 1.2.3- -n这n(0<n<=1000000000)个数中有多少个数可以被正整数b整除. 输入 ...
- java实现QQ空间模拟登录
import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import j ...
- LINUX 中 VSFTPD安裝
VSFTPD 简写:vsftpd是very secure FTP daemon 的缩写,是一个完全免费的,开源代码的ftp服务器软件 特点:vsftpd是一款在LINUX发行版中最受推崇的FTP服务器 ...
- phpunit使用
phpunit使用 标签(空格分隔): php 现在是凌晨 3 点.我们怎样才能知道自己的代码依然在工作呢? Web 应用程序是 24x7 不间断运行的,因此我的程序是否还在运行这个问题会在晚上一直困 ...