扯淡

看到题目想到二项式反演

然后忘了给求阶乘的时候取模,调了一晚上

真令人窒息

思路

二项式反演

首先二项式反演还有另一种形式(不会证)

设\(G_i\)为有至少i个的方案数量,\(F_i\)为恰好有i个的方案数量

则有以下形式:

\[G_k=\Sigma_{i=k}^{n}C_i^kF_i \Rightarrow F_k=\Sigma_{i=k}^n(-1)^{i-k}C_i^kG_i
\]

所以套入本题

设\(F_i\)为恰好i对糖果比药片能量多的方案数,\(G_i\)为至少i对糖果比药片能量多的方案数

则可以对\(G_i\)dp求解

\(dp_{i,j}\)表示前i个,j对糖果比药片能量多的方案数,\(L_i\)是药片和糖果能量均从小到大排序后,最后一个能量小于第i个糖果的药片的标号,则\(G_i=dp_{n,i}\times(n-i)!\),原因显然,j对之后剩下的随便排列即可,所以乘上阶乘

dp方程是

\[dp_{i,j}=dp_{i-1,j}+dp_{i-1,j-1}*(L_i-j+1)
\]

然后二项式反演即可

代码

#include <cstdio>
#include <algorithm>
#include <cstring>
#define int long long
using namespace std;
int a[3000],b[3000],dp[3000][3000],jc[3000],g[3000],inv[3000],n,k,t;
const int MOD = 1000000009;
int pow(int a,int b){
int ans=1;
while(b){
if(b&1)
ans=(1LL*a*ans)%MOD;
a=(1LL*a*a)%MOD;
b>>=1;
}
return ans%MOD;
}
int C(int n,int m){
return 1LL*jc[n]*inv[m]%MOD*inv[n-m]%MOD;
}
signed main(){
scanf("%lld %lld",&n,&k);
if((n+k)%2){
printf("0\n");
return 0;
}
t=(n+k)/2;
for(int i=1;i<=n;i++)
scanf("%lld",&a[i]);
for(int i=1;i<=n;i++)
scanf("%lld",&b[i]);
sort(a+1,a+n+1);
sort(b+1,b+n+1);
int lastpos=0;
dp[0][0]=1;
for(int i=1;i<=n;i++){
dp[i][0]=dp[i-1][0];
for(int j=1;j<=i;j++){
for(;b[lastpos]<a[i]&&lastpos<=n;lastpos++);
lastpos--;
dp[i][j]=(1LL*dp[i-1][j]+1LL*dp[i-1][j-1]*max(lastpos-j+1,0LL)%MOD)%MOD;
}
}
jc[0]=1;
inv[0]=1;
for(int i=1;i<=n;i++){
jc[i]=1LL*jc[i-1]*i%MOD;
inv[i]=pow(jc[i],MOD-2);
}
for(int i=0;i<=n;i++)
g[i]=1LL*dp[n][i]*jc[n-i]%MOD;
int ans=0;
for(int i=t;i<=n;i++)
ans=(ans+1LL*(((i-t)%2)?-1:1)*C(i,t)*g[i]%MOD)%MOD;
printf("%lld\n",(ans%MOD+MOD)%MOD);
return 0;
}

BZOJ 3622 已经没有什么好怕的了的更多相关文章

  1. bzoj 3622 DP + 容斥

    LINK 题意:给出n,k,有a,b两种值,a和b间互相配对,求$a>b$的配对组数-b>a的配对组数恰好等于k的情况有多少种. 思路:粗看会想这是道容斥组合题,但关键在于如何得到每个a[ ...

  2. BZOJ 3622 Luogu P4859 已经没有什么好害怕的了 (容斥原理、DP)

    题目链接 (Luogu) https://www.luogu.org/problem/P4859 (bzoj) https://www.lydsy.com/JudgeOnline/problem.ph ...

  3. BZOJ 3622: 已经没有什么好害怕的了 [容斥原理 DP]

    3622: 已经没有什么好害怕的了 题意:和我签订契约,成为魔法少女吧 真·题意:零食魔女夏洛特的结界里有糖果a和药片b各n个,两两配对,a>b的配对比b>a的配对多k个学姐就可能获胜,求 ...

  4. bzoj 3622 已经没有什么好害怕的了 类似容斥,dp

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

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

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=3622 题解: 容斥,dp1).可以求出需要多少对"糖果>药片"(K ...

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

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

  7. bzoj 3622 已经没有什么好害怕的了——二项式反演

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3622 令 f[i] 表示钦定 i 对 a[ ]>b[ ] 的关系的方案数:g[i] 表 ...

  8. 【BZOJ 3622】3622: 已经没有什么好害怕的了(DP+容斥原理)

    3622: 已经没有什么好害怕的了 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 683  Solved: 328 Description Input ...

  9. [BZOJ 3622]已经没有什么好害怕的了

    世萌萌王都拿到了,已经没有什么好害怕的了——    (作死) 笑看哪里都有学姐,真是不知说什么好喵~ 话说此题是不是输 0 能骗不少分啊,不然若学姐赢了,那么有头的学姐还能叫学姐吗?  (作大死) 这 ...

随机推荐

  1. WebAppInitializer类,代替web.xml

    package com.ssm.yjblogs.config; import javax.servlet.MultipartConfigElement; import javax.servlet.Se ...

  2. xml 的 <![CDATA["URL"]]>

    <![CDATA["URL"]]>:用于 xml 处理特殊字符,比如:& <PolicyURL><![CDATA[ http://ectp.t ...

  3. 什么是ASCII

    以下内容是从百度百科学的 1)ASCII(American Standard Code for Information Interchange:美国信息交换标准代码) 2)产生原因 在计算机中,所有的 ...

  4. php小数加减精度问题,比特币计算精度问题

    php小数加减精度问题,比特币计算精度问题 在php开发时,有小数加减的场景.结果发现不能够等于预想的值,bccomp比较二个高精确度数字.语法: int bccomp(string left ope ...

  5. Music life

    some songs: you are you are <<你眼中的世界> Trouble I'm In > 1:40 secs 忧桑钢琴曲 < 豆花之歌 The Tru ...

  6. Codeforces 456A - Laptops

    题目链接:http://codeforces.com/problemset/problem/456/A One day Dima and Alex had an argument about the ...

  7. [转载]WebService使用的一些总结

    什么是WebService: 这个不用我在这里废话,网上的资料一搜一大把,如果你没有接触过这方面的知识,你可以先去网上查一下.这里我只想说一下我印象比较深刻的几点: WebService是基于soap ...

  8. modelform添加属性

    暗暗啊

  9. Python 3 实现色情图片识别

    Python 3 实现色情图片识别 项目简介 项目内容 本实验将使用 Python3 去识别图片是否为色情图片,我们会使用到 PIL 这个图片处理库,会编写算法来划分图像的皮肤区域. 项目知识点 Py ...

  10. python3 独立环境 virtualenv & conda

    python3 独立环境 virtualenv & conda virtualenv 创建独立python环境 virtualenv env_name -p /usr/bin/python3 ...