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

题意:和我签订契约,成为魔法少女吧

真·题意:零食魔女夏洛特的结界里有糖果a和药片b各n个,两两配对,a>b的配对比b>a的配对多k个学姐就可能获胜,求方案数


PS:洛谷月赛拿到了一个Modoka的挂件O(∩_∩)O哈哈~




总的方案数就是\(n!\),相当于一个做全排列

恰好多k个,那么就是a>b的有\(k=k+\frac{n-k}{2}\)个

恰好\(\rightarrow\)容斥

\[=\ \ge k个的配对方案数\ -\ \ge k+1个\ +\ \ge k+2个\ ...
\]

\(\ge i\)个就是先选出i对a>b的,剩下的任意排列

用个dp吧,先排序,求出\(g[i]\)表示\(a_i\)比\(g[i]\)个b大

\(f[i][j]\)表示前i个a选出j对a>b的方案数

\[ans= \sum_{i=k}^n (-1)^{i-k}f[n][i](n-i)!
\]



然后就一直WA...
原因是,你忘了spring吗,原因相同,我们算方案的时候重复了,每个k+i个配对的方案被考虑了 $\binom{k+i}{k}$ 次呀,应该只被考虑一次才对

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long ll;
const int N=2005, P=1e9+9;
inline int read(){
char c=getchar();int x=0,f=1;
while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}
while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}
return x*f;
} int n, k, a[N], b[N];
ll f[N][N], fac[N], inv[N], facInv[N]; int g[N];
inline ll C(int n, int m) {return fac[n]*facInv[m]%P*facInv[n-m]%P;}
void dp() {
int now=0;
for(int i=1; i<=n; i++) {
while(now<n && a[i]>b[now+1]) now++;
g[i] = now;
}
for(int i=0; i<=n; i++) f[i][0]=1;
for(int i=1; i<=n; i++)
for(int j=1; j<=g[i]; j++) f[i][j] = (f[i-1][j] + f[i-1][j-1]*(g[i]-j+1)%P )%P;// printf("f %d %d %lld\n",i,j,f[i][j]);
}
int main() {
freopen("in","r",stdin);
n=read(); k=read(); if((n+k)&1) {puts("0"); return 0;}
k += (n-k)/2;
for(int i=1; i<=n; i++) a[i]=read();
for(int i=1; i<=n; i++) b[i]=read();
sort(a+1, a+1+n); sort(b+1, b+1+n);
inv[1]=1; fac[0]=facInv[0]=1;
for(int i=1; i<=n; i++) {
if(i!=1) inv[i] = (P-P/i)*inv[P%i]%P;
fac[i] = fac[i-1]*i%P;
facInv[i] = facInv[i-1]*inv[i]%P;
}
dp();
ll ans=0;
for(int i=k; i<=n; i++) ( ans += ( ((i-k)&1) ? -1 : 1 ) * fac[n-i] * f[n][i]%P * C(i, k)%P )%=P;
printf("%lld\n",(ans+P)%P);
}

BZOJ 3622: 已经没有什么好害怕的了 [容斥原理 DP]的更多相关文章

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

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

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

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

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

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

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

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

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

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

  6. 解题:BZOJ 3622 已经没有什么好害怕的了·

    题面 用来学习二项式反演的题目 大于等于/小于等于 反演出 恰好等于 设前者为f(n),后者为g(n),则有$f(n)=\sum\limits_{i=0}^nC_n^ig(n)<->g(n ...

  7. BZOJ 3622: 已经没有什么好害怕的了(二项式反演)

    传送门 解题思路 首先将\(a\),\(b\)排序,然后可以算出\(t(i)\),表示\(a(i)\)比多少个\(b(i)\)大,根据容斥套路,设\(f(k)\)表示恰好有\(k\)个\(a(i)\) ...

  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. 【BZOJ 3622】3622: 已经没有什么好害怕的了(DP+容斥原理)

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

随机推荐

  1. A very hard Aoshu problem(dfs或者数位)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4403 A very hard Aoshu problem Time Limit: 2000/1000 ...

  2. 番外篇--Moddule Zero介绍

    1.1 ABPZero - 概述 介绍 微软ASP.NET身份框架 权限 会话 角色管理 默认角色 用户管理 多租户 设置管理 审计日志 1.1.1 介绍 Modulde Zero实现了ASP.NET ...

  3. vue2.0集成百度UE编辑器,上传图片报错!!!

    我这边配置进去之后,界面加载,文本输入都没有问题,就是上传图片会有问题 这张图, 左边红色框框 就是目录结构咯, 右边红色框框 就是各种网上教程给出的第一个路径配置对吧, 下面的就是绿色 服务器接口配 ...

  4. JDK、JRE、JVM详解

    JDK.JRE.JVM JDK包含JRE,而JRE包含JVM JDK(Java Development Kit)是针对Java开发员的产品,是整个Java的核心,包括了Java运行环境JRE.Java ...

  5. Java面试经

    最近趁有空整理下面试经常会被问到的知识点,参考的资料都是本人通过百度而挑选出来的,具有一定的参考意义. 一 .java基础1.String和StringBuffer.StringBuild的区别:ht ...

  6. winform打开本地html页面

    有时候为了提高开发效率和后期可维护性,把cs里面嵌套了远程网页,这样方便后期升级.比如,美图秀秀,qq音乐PC都嵌套了本地和远程网页.在页面拖入控件System.Windows.Forms.WebBr ...

  7. 【问题处理】mysql sleep 连接数过多

    睡眠连接过多,会对mysql服务器造成什么影响?严重消耗mysql服务器资源(主要是cpu, 内存),并可能导致mysql崩溃.造成睡眠连接过多的原因?1. 使用了太多持久连接(个人觉得,在高并发系统 ...

  8. node 在控制台打印有色彩的输出

    在学习 node 过程中,因为没有找到有断点的调试方法,只能退而次之,在控制台打印调试. 但整个控制台的输出都是一种颜色,有时候很难找到自己需要的信息,这时,有颜色的打印就会帮上很大的忙. conso ...

  9. android 获取屏幕的宽和高

    屏幕高度:context.getResources().getDisplayMetrics().heightPixels 屏幕宽度:context.getResources().getDisplayM ...

  10. IE各个版本的差异性

    1.IE6a.不支持png半透明图片,只能用filter实现b.不支持css的max-width.max-height.min-width.min-height其他不用说,一团糟,不过项目中还是得去兼 ...