[bzoj3622]已经没有什么好害怕的了
2016-03-01 11:34
357 查看
3622: 已经没有什么好害怕的了
Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 197 Solved: 113
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
4 2
5 35 15 45
40 20 10 30
Sample Output
4
HINT
输入的2*n个数字保证全不相同。
还有输入应该是第二行是糖果,第三行是药片
g[i]在求的时候不能直接把后面的g[j]全加起来的原因是在计算f[][]*()!的这个式子的时候,有些数列会被算很多遍,所以要容斥一下。
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; #define LL long long #define D 1000000009 const int N=2010; int n,m,a ,b ; LL p[N],f[N][N],g[N],jc[N],c[N][N]; int main(){ int i,j; scanf("%d%d",&n,&m); if((m+n)%2){printf("0\n");return 0;} for(i=1;i<=n;++i) scanf("%d",&a[i]); for(i=1;i<=n;++i) scanf("%d",&b[i]); sort(a+1,a+n+1);sort(b+1,b+n+1); for(j=0,i=1;i<=n;++i){ while(j+1<=n&&b[j+1]<a[i]) j+=1; p[i]=j; } f[0][0]=1; for(i=1;i<=n;++i) for(f[i][0]=f[i-1][0],j=1;j<=i;++j) f[i][j]=(f[i-1][j]+(f[i-1][j-1]*max(0LL,(p[i]-(LL)j+1)))%D)%D; for(jc[1]=1,i=2;i<=n;++i) jc[i]=jc[i-1]*(LL)i%D; for(i=0;i<=n;++i){ c[i][0]=c[i][i]=1; for(j=1;j<i;++j) c[i][j]=(c[i-1][j-1]+c[i-1][j])%D; } for(i=n;i;--i){ g[i]=f [i]*jc[n-i]%D; for(j=i+1;j<=n;++j){ g[i]-=g[j]*c[j][i]; g[i]=(g[i]%D+D)%D; } } printf("%lld\n",g[(n+m)/2]); }
相关文章推荐
- LDAP服务原理详解
- 网络知识方面的面试题
- #leetcode# Best Time to Buy and Sell Stock II
- PAT-A1002A+B for Polynomials(模拟)
- btrfs使用方法
- HBase安装
- linux 下源码安装cmake
- 使用live delegate on来解决js对后加载的html失效的问题
- Web使用中会话,会话跟踪,Cookie,Session的相关知识
- FOJ-2214 Knapsack problem
- Android控件获取焦点
- Fragment加载轮换add,show,hide,replace方法
- HBase源码分析之HRegionServer上MemStore的flush处理流程(二)
- 创建自己的动态链接库(类库)
- android: ADB错误“more than one device and emulator”
- C# IOCP完成端口模型(简单实用高效)
- 去除HTML5 number右边的箭头
- 微信官方sdk分享ios9检测微信不存在的了解决办法
- 【python】编程语言入门经典100例--16
- 【转】深入理解SQL的四种连接-左外连接、右外连接、内连接、全连接