题目描述

数据范围

=w=

设h[i]表示,甲队得到i分的方案数。

那么h[(n+k)/2]和h[(n−k)/2]就是答案。


设g[i]表示,甲队得到至少i分的方案数。

那么h[i]=g[i]−∑j>ih[j]∗Cij。

思考这条递推式的正确性:

考虑g[i]比h[i]多了什么,对于每个j>i,h[j]中的每个单位表示:

甲队中的j个元素,都与乙队中的j个元素一一对应。

如果从这j个元素中任意选择i个元素,那么有Cij中选法,其中每种选法都可以唯一扩展到这个单位。


g可用动态规划求。

代码

#include<iostream>
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<algorithm>
#define ll long long
using namespace std;
const char* fin="aP3.in";
const char* fout="aP3.out";
const ll inf=0x7fffffff;
const ll maxn=2007,mo=1000000007;
ll n,m,i,j,k,ans;
ll a[maxn],b[maxn];
ll A[maxn],B[maxn];
ll f[2][maxn];
ll c[maxn][maxn];
ll h[maxn],fact[maxn];
int main(){
scanf("%lld%lld",&n,&m);
for (i=1;i<=n;i++) scanf("%lld",&a[i]);
for (i=1;i<=n;i++) scanf("%lld",&b[i]);
for (i=0;i<=n;i++){
c[0][i]=1;
for (j=1;j<=i;j++) c[j][i]=(c[j-1][i-1]+c[j][i-1])%mo;
}
if ((n+m)%2) printf("0");
else{
ll v=0;
sort(a+1,a+n+1);
sort(b+1,b+n+1);
j=0;
for (i=1;i<=n;i++){
while (j<n && a[i]>b[j+1]) j++;
A[i]=j;
}
f[v][0]=1;
for (i=1;i<=n;i++){
v^=1;
for (j=0;j<=i;j++){
f[v][j]=0;
f[v][j]=f[1-v][j];
if (j) f[v][j]=(f[v][j]+f[1-v][j-1]*(A[i]-(j-1)))%mo;
}
}
fact[0]=1;
for (i=1;i<=n;i++) fact[i]=fact[i-1]*i%mo;
for (i=n;i>=0;i--){
h[i]=f[v][i]*fact[n-i];
for (j=i+1;j<=n;j++){
h[i]=((h[i]-c[j-i][j]*h[j])%mo+mo)%mo;
}
if (i==(n+m)/2 || i==(n-m)/2) ans=(ans+h[i])%mo;
}
printf("%lld\n",ans);
}
return 0;
}

最新文章

  1. Schema
  2. Atitti usrQBf1801 翻页控件规范 &#160;v2
  3. angular源码分析:angular中jqLite的实现——你可以丢掉jQuery了
  4. 7 HandlerSet 处理程序链表类——Live555源码阅读(一)基本组件类
  5. CentOS更新yum源
  6. PHP 生成二维码
  7. Codeforces Round #378 (Div. 2) D题(data structure)解题报告
  8. ASP.NET内置对象之Request传递请求对象
  9. linux中 ECShop的文件不能写
  10. 原生JavaScript的省市县三级联动
  11. iOS中的图像处理(一)——基础滤镜
  12. MongoDB1: 环境安装
  13. .Net小白的第一篇博客
  14. es6 的循环
  15. .NET Core 使用NLog日志记录
  16. JS截取数字
  17. 抓包分析、多线程爬虫及xpath学习
  18. 小学四则运算编程(c#)
  19. jQuery源码解析对象实例化与jQuery原型及整体构建模型分析(一)
  20. day056-58 django多表增加和查询基于对象和基于双下划线的多表查询聚合 分组查询 自定义标签过滤器 外部调用django环境 事务和锁

热门文章

  1. csp-s模拟48,49 Tourist Attractions,养花,画作题解
  2. 第四章 Odoo 12 开发之模块继承
  3. nodejs + mySQL实践
  4. 技术 | TypeScript
  5. hbase 聚合操作
  6. For循环和闭包问题
  7. 遍历list时删除元素的正确做法
  8. idea中隐藏.idea文件夹和.iml文件
  9. fastjson 对象和json互转
  10. 超高频率问题之信息: Illegal access: this web application instance has been stopped already. Could not load . The eventual following stack trace is caused by an error thrown for debugging purposes as well as