显然可以转化为一个阶梯状01矩阵每行每列取一个使权值和为k的方案数。直接做不可做,考虑设f[i][j]为前i行权值和至少为j,即在其中固定了j行选1的方案数。设第i行从1~a[i]列都是1且a[i]+1列是0,则f[i][j]=f[i-1][j]+f[i-1][j-1]*(a[i]-j+1)。剩下的可以随便填,于是f[n][i]*=(n-i)!。求完之后考虑容斥,权值和恰好为x的在权值和至少为k的方案中被算了C(x,k)次,得ans=Σ(-1)i-kf[n][i]·C(i,k) (i=k~n)。

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
int read()
{
int x=,f=;char c=getchar();
while (c<''||c>'') {if (c=='-') f=-;c=getchar();}
while (c>=''&&c<='') x=(x<<)+(x<<)+(c^),c=getchar();
return x*f;
}
#define N 2010
#define P 1000000009
int n,m,w[N],v[N],a[N],f[N][N],C[N][N],fac[N];
int main()
{
#ifndef ONLINE_JUDGE
freopen("bzoj3622.in","r",stdin);
freopen("bzoj3622.out","w",stdout);
const char LL[]="%I64d\n";
#else
const char LL[]="%lld\n";
#endif
n=read(),m=read();
for (int i=;i<=n;i++) w[i]=read();
for (int i=;i<=n;i++) v[i]=read();
fac[]=;for (int i=;i<=n;i++) fac[i]=1ll*fac[i-]*i%P;
sort(w+,w+n+),sort(v+,v+n+);
for (int i=;i<=n;i++)
for (int j=n;j;j--)
if (w[i]>v[j]) {a[i]=j;break;}
if (n+m&) {cout<<;return ;}
m=n+m>>;
f[][]=;C[][]=;
for (int i=;i<=n;i++)
{
f[i][]=f[i-][];C[i][]=C[i][i]=;
for (int j=;j<=n;j++)
f[i][j]=(f[i-][j]+1ll*f[i-][j-]*(a[i]-j+)%P)%P;
for (int j=;j<i;j++) C[i][j]=(C[i-][j-]+C[i-][j])%P;
}
int ans=;
for (int i=m;i<=n;i++)
if (i-m&) ans=(ans-1ll*f[n][i]*fac[n-i]%P*C[i][m]%P+P)%P;
else ans=(ans+1ll*f[n][i]*fac[n-i]%P*C[i][m]%P)%P;
cout<<ans;
return ;
}

BZOJ3622 已经没有什么好害怕的了(动态规划+容斥原理)的更多相关文章

  1. BZOJ3622 已经没有什么好害怕的了 动态规划 容斥原理 组合数学

    原文链接https://www.cnblogs.com/zhouzhendong/p/9276479.html 题目传送门 - BZOJ3622 题意 给定两个序列 $a,b$ ,各包含 $n$ 个数 ...

  2. [bzoj3622]已经没有什么好害怕的了_动态规划_容斥原理

    bzoj-3622 已经没有什么好害怕的了 题目大意: 数据范围:$1\le n \le 2000$ , $0\le k\le n$. 想法: 首先,不难求出药片比糖果小的组数. 紧接着,我开始的想法 ...

  3. bzoj3622已经没有什么好害怕的了

    bzoj3622已经没有什么好害怕的了 题意: 给n个数Ai,n个数Bi,将Ai中的数与Bi中的数配对,求配对Ai比Bi大的比Bi比Ai大的恰好有k组的方案数.n,k≤2000 题解: 蒟蒻太弱了只能 ...

  4. [BZOJ3622]已经没有什么好害怕的了(容斥DP)

    给定两个数组a[n]与b[n](数全不相等),两两配对,求“a比b大”的数对比“b比a大”的数对个数多k的配对方案数. 据说做了这题就没什么题好害怕的了,但感觉实际上这是一个套路题,只是很难想到. 首 ...

  5. BZOJ3622 已经没有什么好害怕的了 【dp + 二项式反演】

    题目链接 BZOJ3622 题解 既已开题 那就已经没有什么好害怕的了 由题目中奇怪的条件我们可以特判掉\(n - k\)为奇数时答案为\(0\) 否则我们要求的就是糖果大于药片恰好有\(\frac{ ...

  6. bzoj3622已经没有什么好害怕的了 dp+组合+容斥(?)

    3622: 已经没有什么好害怕的了 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 1033  Solved: 480[Submit][Status][ ...

  7. BZOJ3622 已经没有什么好害怕的了

    Description Input Output Sample Input 4 2 5 35 15 45 40 20 10 30 Sample Output 4 HINT 输入的2*n个数字保证全不相 ...

  8. 【BZOJ3622】已经没什么好害怕的了 容斥原理+dp

    Description Input Output Sample Input 4 2 5 35 15 45 40 20 10 30 Sample Output 4 HINT 输入的2*n个数字保证全不相 ...

  9. 洛谷 P4859 && BZOJ3622: 已经没有什么好害怕的了

    题目描述 给出 \(n\) 个数 \(a_i\)​ ,以及 \(n\) 个数 \(b_i\)​ ,要求两两配对使得 \(a>b\) 的对数减去 \(a<b\) 的对数等于 \(k\) . ...

随机推荐

  1. PostgreSQL Streaming Replication的FATAL ERROR

    磨砺技术珠矶,践行数据之道,追求卓越价值回到上一级页面: PostgreSQL集群方案相关索引页     回到顶级页面:PostgreSQL索引页[作者 高健@博客园  luckyjackgao@gm ...

  2. 优步UBER司机全国各地最新奖励政策汇总(持续更新...)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://didi-uber.com/archiv ...

  3. 【LG3237】[HNOI2014]米特运输

    题面 洛谷 题解 代码 #include <iostream> #include <cstdio> #include <cstdlib> #include < ...

  4. spring源码-aop动态代理-5.3

    一.动态代理,这是一个很强大的东西哦.研发过程中我们会常用很多业务类,但是存在一个问题.如何在不修改源码逻辑的情况下,加入自己的相关逻辑.比如异常处理,日志记录等! 二.Java动态代理的两种方式JD ...

  5. python的rtree包缺失libspatiaindex.so

    1 准备autoconf工具 yum -y install autoconf automake libtool 2 准备g++编译器 yum -y install gcc gcc-c++ 3 下载并安 ...

  6. WPF RegisterAttached ListBoxItem(附加属性传递到Item)

    /// <summary> /// Controls的附加属性 /// </summary> public class ControlsAttached : Dependenc ...

  7. jenkins统计单元测试的覆盖率

    前提:单元测试和被测代码在一个仓库 maven的pom配置 依赖增加 <dependency> <groupId>org.jacoco</groupId> < ...

  8. 003 -- Dubbo简单介绍

    1:Dubbo的基本概念 dubbo是阿里巴巴SOA服务治理 方案的核心框架,每天为20000+个服务次的数据量访问支持.dubbo是一个分布式的服务框架,致力于提供高性能和透明化的RPC远程服务调用 ...

  9. Python基础灬dict&set

    字典dict 字典使用键-值(key-value)存储,具有极快的查找速度. dict基本操作 取值 a_dict = {'name': 'jack', 'age': 18} print(a_dict ...

  10. charles 在mac下 抓取 https包

    1.  打开charles --> help --> SSL proxying --> install charles root certificate 2. 在弹出的添加证书窗口中 ...