bzoj 3622 容斥原理
来源:互联网 发布:中美贸易顺差数据 编辑:程序博客网 时间:2024/04/25 07:56
题意:给出有n个元素的集合A和集合B,所有2n个元素互不相同,求将A集合中的元素和B集合中的元素两两配对,使A的元素大于B中元素的对数恰为
设
那么先将A和B排序,设
这个方程没有考虑A中除了这j对中元素之外的其他元素的配对方向。
那么容斥一下,设
#include <bits/stdc++.h>using namespace std;#define mod 1000000009#define ll long long#define N 2100int n,K;int a[N],b[N],nex[N],g[N],jc[N];int f[N][N],C[N][N];int main(){ //freopen("tt.in","r",stdin); scanf("%d%d",&n,&K); if((n+K)&1){puts("0");return 0;} for(int i=1;i<=n;i++)scanf("%d",&a[i]); for(int i=1;i<=n;i++)scanf("%d",&b[i]); sort(a+1,a+1+n);sort(b+1,b+1+n); jc[0]=1; for(int i=1;i<=n;i++)jc[i]=(ll)jc[i-1]*i%mod; for(int i=0;i<=n;i++)C[i][0]=1; for(int i=1;i<=n;i++) for(int j=1;j<=i;j++) C[i][j]=(C[i-1][j]+C[i-1][j-1])%mod; for(int i=1,now=1;i<=n;i++) { while((!now||b[now]<a[i])&&now<=n)now++; now--;nex[i]=now; } f[0][0]=1; for(int i=1;i<=n;i++) for(int j=0;j<=i;j++) { f[i][j]=f[i-1][j]; if(j)(f[i][j]+=(ll)f[i-1][j-1]*(nex[i]-j+1)%mod)%=mod; } int t=(n+K)/2; for(int i=n;i>=t;i--) { g[i]=(ll)f[n][i]*jc[n-i]%mod; for(int j=i+1;j<=n;j++) (g[i]+=mod-(ll)g[j]*C[j][i]%mod)%=mod; } printf("%d\n",g[t]); return 0;}
0 0
- bzoj 3622 容斥原理
- BZOJ 2005 容斥原理
- BZOJ 2045 容斥原理
- bzoj 1853 容斥原理
- BZOJ 2393 容斥原理
- bzoj 2393 & bzoj 1853 容斥原理
- BZOJ 2839 集合计数 容斥原理
- BZOJ 3771 Triple FFT+容斥原理
- 【bzoj】2190 - 仪仗队(容斥原理)
- bzoj 3812 状压dp 容斥原理
- bzoj 2669 状压dp 容斥原理
- bzoj 2393(容斥原理)
- bzoj 1042(dp+容斥原理)
- BZOJ 1042 [DP][容斥原理]
- [容斥原理] BZOJ 2839 集合计数
- BZOJ 4710 容斥原理+dp
- [容斥原理]BZOJ 2839: 集合计数
- BZOJ 4710 分特产 容斥原理
- 【面试题64】数据流中的中位数
- Http、TCP/IP协议与Socket之间的关系
- C与C++有什么区别?
- android高仿微信表情输入与键盘输入详解
- 拜访-美团校招原题
- bzoj 3622 容斥原理
- Fragment(碎片)(3)
- 05 Android强制设置横屏或竖屏/全屏
- mysql各个部分的执行顺序
- 如何对数据库响应变慢进行优化
- JAVA快速排序——亿级体量数据
- 数据库对数据库查询语句的处理步骤
- 结构方程-SEM R 很难搞
- mysql的查询优化器