3622: 已经没有什么好害怕的了

Time Limit: 10 Sec  Memory Limit: 256 MB
Submit: 683  Solved: 328

Description

Input

Output

Sample Input

4 2
5 35 15 45
40 20 10 30

Sample Output

4

HINT

输入的2*n个数字保证全不相同。

还有输入应该是第二行是糖果,第三行是药片

Source

【分析】

  もう何も怖くない

  首先n+k为奇特判无解。

  然后知道要选多少组ai>bj的

  然后就选吧。

  先两个都排一遍序

  $f[i][j]$表示选了a的前$i$组后有$j$组$ai>bj$的,的方案数。

  这个很简单好吗!!(我昨天晚上看这题时候绝对脑抽)

  $f[i][j]=f[i-1][j]+f[i-1][j-1]*(mx[i]-j+1)$ 剩下的先不用管,后面乱排乘一个阶乘

  $mx[i]$表示最多前$mx[i]$个$b$数组小于$a[i]$

  但是!!不能保证刚好就等于你要的组数,可能大于它。于是容斥大法就来了。

  $dp[i]=f[n][i]*(n-i)!-dp[j]*C[j][i] (j>i)$

  组合数也递推就好了。

 #include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
#define Maxn 2010
#define Mod 1000000009
#define LL long long LL mymax(LL x,LL y) {return x>y?x:y;} LL a[Maxn],b[Maxn],f[Maxn][Maxn],mx[Maxn],dp[Maxn],p[Maxn];
LL c[Maxn][Maxn]; int main()
{
LL n,k;
scanf("%lld%lld",&n,&k);
if((n+k)&) printf("0\n");
else
{
k=(n+k)/;
for(LL i=;i<=n;i++) scanf("%lld",&a[i]);
for(LL i=;i<=n;i++) scanf("%lld",&b[i]);
sort(a+,a++n);
sort(b+,b++n);
LL st=;
for(LL i=;i<=n;i++)
{
while(a[i]>b[st+]&&st<n) st++;
mx[i]=st;
}
memset(f,,sizeof(f));
for(int i=;i<=n;i++) f[i][]=;
for(LL i=;i<=n;i++)
for(LL j=;j<=i;j++)
{
f[i][j]=(f[i-][j]+f[i-][j-]*mymax(mx[i]-j+,))%Mod;
}
for(LL i=;i<=n;i++) c[i][]=;
for(LL i=;i<=n;i++)
for(LL j=;j<=i;j++)
{
c[i][j]=(c[i-][j]+c[i-][j-])%Mod;
}
p[]=;
for(LL i=;i<=n;i++) p[i]=(p[i-]*i)%Mod;
for(LL i=n;i>=k;i--)
{
dp[i]=(f[n][i]*p[n-i])%Mod;
for(LL j=i+;j<=n;j++)
{
dp[i]=dp[i]-c[j][i]*dp[j];
dp[i]=(dp[i]%Mod+Mod)%Mod;
}
}
printf("%lld\n",dp[k]);
}
return ;
}

もう何も怖くない(呵呵

2017-04-06 14:16:58

【BZOJ 3622】3622: 已经没有什么好害怕的了(DP+容斥原理)的更多相关文章

  1. [BZOJ 4455] [ZJOI 2016] 小星星 (树形dp+容斥原理+状态压缩)

    [BZOJ 4455] [ZJOI 2016] 小星星 (树形dp+容斥原理+状态压缩) 题面 给出一棵树和一个图,点数均为n,问有多少种方法把树的节点标号,使得对于树上的任意两个节点u,v,若树上u ...

  2. BZOJ 3622 : 已经没有什么好害怕的了(dp + 广义容斥原理)

    今天没听懂 h10 的讲课 但已经没有什么好害怕的了 题意 给你两个序列 \(a,b\) 每个序列共 \(n\) 个数 , 数之间两两不同 问 \(a\) 与 \(b\) 之间有多少配对方案 使得 \ ...

  3. BZOJ - 3622:已经没有什么好害怕的了 (广义容斥)

    [BZOJ3622]已经没有什么好害怕的了 Description Input Output Sample Input 4 2 5 35 15 45 40 20 10 30 Sample Output ...

  4. 【bzoj 3622】已经没有什么好害怕的了

    题目 看到这个数据范围就发现我们需要一个\(O(n^2)\)的做法了,那大概率是\(dp\)了 看到恰好\(k\)个我们就知道这基本是个容斥了 首先解方程发现我们需要使得\(a>b\)的恰好有\ ...

  5. BZOJ - Problem 3622 - 已经没有什么好害怕的了

    题意: 给定两个序列$a$和$b$,让它们进行匹配,求出使得$a_i > b_j$的个数比$a_i < b_j$的个数恰好多$k$,求这样的匹配方法数 题解: 这题的各种表示有一点相似又截 ...

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

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

  7. [BZOJ 1879][SDOI 2009]Bill的挑战 题解(状压DP)

    [BZOJ 1879][SDOI 2009]Bill的挑战 Description Solution 1.考虑状压的方式. 方案1:如果我们把每一个字符串压起来,用一个布尔数组表示与每一个字母的匹配关 ...

  8. [BZOJ 4350]括号序列再战猪猪侠 题解(区间DP)

    [BZOJ 4350]括号序列再战猪猪侠 Description 括号序列与猪猪侠又大战了起来. 众所周知,括号序列是一个只有(和)组成的序列,我们称一个括号 序列S合法,当且仅当: 1.( )是一个 ...

  9. BZOJ 2806 Luogu P4022 [CTSC2012]Cheat (广义后缀自动机、DP、二分、单调队列)

    题目链接: (bzoj) https://www.lydsy.com/JudgeOnline/problem.php?id=2806 (luogu) https://www.luogu.org/pro ...

随机推荐

  1. php发送get和post请求

    1. Get方式实现 //初始化 $ch = curl_init(); //设置选项,包括URL curl_setopt($ch, CURLOPT_URL, "http://www.abc. ...

  2. Centos7系统环境下Solr之Java实战(一)搭建solr服务器

    搭建步骤 1.分别上传tomcat.sorl到指定文件夹并解压 2.把solr部署到Tomcat下 通过命令 cp apache-tomcat-7.0.47 /usr/local/sorl/tomca ...

  3. [linux]codeblocks开发mysql配置

    1.在安装好mysql后,可以应该安装必要的库文件 $sudo apt-get install libmysqlclient-dev 2.将codeblocks与mysql的库文件连接起来 在code ...

  4. Spring websocket浏览器连接时出现404错误

    1.场景 在用websocket做一个简单的数据导入页面同步显示后台进度功能的时候,浏览器出现连接不上的错误: WebSocket connection to 'ws://localhost:8080 ...

  5. [网站安全] [实战分享]WEB漏洞挖掘的一些经验分享

    WEB漏洞有很多种,比如SQL注入,比如XSS,比如文件包含,比如越权访问查看,比如目录遍历等等等等,漏洞带来的危害有很多,信息泄露,文件上传到GETSHELL,一直到内网渗透,这里我想分享的最主要的 ...

  6. bootstrap分页查询传递中文参数到后台(get方式提交)

    <!--分页 --> <div style="width: 380px; margin: 0 auto; margin-top: 50px;"> <u ...

  7. HTML表单属性与全局属性

    1.全局属性

  8. C++之模板编程

    当我们越来越多的使用C++的特性, 将越来越多的问题和事物抽象成对象时, 我们不难发现:很多对象都具有共性. 比如 数值可以增加.减少:字符串也可以增加减少. 它们的动作是相似的, 只是对象的类型不同 ...

  9. PHP 快速建立一个对象

    前言 PHP 中的数组(尤其关联数组)是经常使用的 —— 因为方便.在一些框架中也经常见到返回数组格式的配置参数.然而有些时候可能需要对象而非数组类型的配置参数,在查阅网络资料后找到了方法,作以记录. ...

  10. [ python ] 面向对象 - 选课系统

    根据源程序进行改写:    原程序地址:http://www.cnblogs.com/lianzhilei/p/5985333.html  如有侵权立即删除.    感谢原作者将完整的代码提供参考.  ...