BZOJ - Problem 3622 - 已经没有什么好害怕的了
题意:
给定两个序列$a$和$b$,让它们进行匹配,求出使得$a_i > b_j$的个数比$a_i < b_j$的个数恰好多$k$,求这样的匹配方法数
题解:
这题的各种表示有一点相似又截然不同,很容易混淆。
直接求恰好满足$k$对不好求,所以先放宽条件,这样子有利于构造动规方程。
先用$f_{i, j}$表示在前$i$个中,至少选择$j$个$a > b$的匹配的方案数(是匹配的方案数,只关心匹配那一部分,不关心其它的部分),容易得到动规方程:
ƒi,j = ƒi - 1,j + (Lasti - (j - 1)) * ƒi - 1,j - 1
其中$Last_i$表示第一个小于$a_i$的$b_j$。
$(Last_i - (j - 1))$表示原有$Last_i$种选择,被选走了$j - 1$种,此时因为是“至少”,所以其它的匹配是不用管的。
那么现在考虑求出恰好为$k$的方案数。
首先令$g_i$表示前$N$个$a$中,满足至少有$i$个$a > b$的方案数,那么
gi = ƒN,j * (N - i) !
这时候才考虑了其它的部分,所以需要乘上阶乘。
再令$f'_i$表示恰好满足$i$组的方案数,那么考虑容斥,在所有的$g_j$中,每个$f'_i (i > j)$被算了$C_i^j$次,因为不考虑其它的,仅$i$个已匹配好的任意取$j$个,其它的随便排,正好被$g_j$囊括,当然这一部分是多余的,所以
ƒ'i = gj - Cj, i * ƒ'j (j > i)
代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm> #define MOD 1000000009 using namespace std; typedef long long LL; const int MAXN = + ; LL g[MAXN][MAXN]; LL f[MAXN]= {}; LL fac[MAXN];
LL C[MAXN][MAXN]; int N, K; int Candy[MAXN], Pill[MAXN]; int Last[MAXN]= {}; void Preparation () {
fac[] = ;
for (int i = ; i <= N; i ++)
fac[i] = fac[i - ] * i % MOD; for (int i = ; i <= N; i ++)
C[i][] = ;
for (int i = ; i <= N; i ++)
for (int j = ; j <= i; j ++)
C[i][j] = (C[i - ][j] + C[i - ][j - ]) % MOD;
} int main () {
scanf ("%d%d", & N, & K); Preparation (); for (int i = ; i <= N; i ++)
scanf ("%d", & Candy[i]);
for (int i = ; i <= N; i ++)
scanf ("%d", & Pill[i]); sort (Candy + , Candy + N + );
sort (Pill + , Pill + N + ); for (int i = ; i <= N; i ++)
for (int j = N; j >= ; j --)
if (Pill[j] < Candy[i]) {
Last[i] = j;
break;
} for (int i = ; i <= N; i ++)
g[i][] = ;
for (int i = ; i <= N; i ++)
for (int j = ; j <= i; j ++)
g[i][j] = (g[i - ][j] + (Last[i] - j + ) * g[i - ][j - ] % MOD) % MOD; for (int i = N; i >= ; i --) {
f[i] = g[N][i] * fac[N - i] % MOD;
for (int j = i + ; j <= N; j ++)
f[i] = ((f[i] - C[j][i] * f[j] % MOD) % MOD + MOD) % MOD;
} printf ("%lld\n", f[(N + K) >> ]); return ;
} /*
4 2
5 35 15 45
40 20 10 30
*/
BZOJ - Problem 3622 - 已经没有什么好害怕的了的更多相关文章
- BZOJ 3622 : 已经没有什么好害怕的了(dp + 广义容斥原理)
今天没听懂 h10 的讲课 但已经没有什么好害怕的了 题意 给你两个序列 \(a,b\) 每个序列共 \(n\) 个数 , 数之间两两不同 问 \(a\) 与 \(b\) 之间有多少配对方案 使得 \ ...
- BZOJ 3622: 已经没有什么好害怕的了 [容斥原理 DP]
3622: 已经没有什么好害怕的了 题意:和我签订契约,成为魔法少女吧 真·题意:零食魔女夏洛特的结界里有糖果a和药片b各n个,两两配对,a>b的配对比b>a的配对多k个学姐就可能获胜,求 ...
- bzoj 3622 已经没有什么好害怕的了 类似容斥,dp
3622: 已经没有什么好害怕的了 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 1213 Solved: 576[Submit][Status][ ...
- 【BZOJ 3622】3622: 已经没有什么好害怕的了(DP+容斥原理)
3622: 已经没有什么好害怕的了 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 683 Solved: 328 Description Input ...
- ●BZOJ 3622 已经没有什么好害怕的了
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=3622 题解: 容斥,dp1).可以求出需要多少对"糖果>药片"(K ...
- bzoj 3622 已经没有什么好害怕的了——二项式反演
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3622 令 f[i] 表示钦定 i 对 a[ ]>b[ ] 的关系的方案数:g[i] 表 ...
- [BZOJ 3622]已经没有什么好害怕的了
世萌萌王都拿到了,已经没有什么好害怕的了—— (作死) 笑看哪里都有学姐,真是不知说什么好喵~ 话说此题是不是输 0 能骗不少分啊,不然若学姐赢了,那么有头的学姐还能叫学姐吗? (作大死) 这 ...
- 解题:BZOJ 3622 已经没有什么好害怕的了·
题面 用来学习二项式反演的题目 大于等于/小于等于 反演出 恰好等于 设前者为f(n),后者为g(n),则有$f(n)=\sum\limits_{i=0}^nC_n^ig(n)<->g(n ...
- BZOJ 3622: 已经没有什么好害怕的了(二项式反演)
传送门 解题思路 首先将\(a\),\(b\)排序,然后可以算出\(t(i)\),表示\(a(i)\)比多少个\(b(i)\)大,根据容斥套路,设\(f(k)\)表示恰好有\(k\)个\(a(i)\) ...
随机推荐
- 【转】小心stringstream.str()字符串用法的陷阱
--------------------- 作者:心中那自由的世界 来源:CSDN 原文:https://blog.csdn.net/119365374/article/details/7744678 ...
- 用户缓冲式I/O
2018-08-05 (星期日)缓冲式I/O 所有磁盘操作都是按照块来进行的,因此,若所送出的I/O请求,其对齐块便捷为实际块大小的整数倍,则可以优化I/O的性能. 读取操作需要进行的系统 ...
- 解决:LNMP架构下访问php页面出现500错误
默认情况下,如果被访问的php脚本中包含语法错误,服务器会返回一个空的“200 ok”页面 在php.ini中的fastcgi.error_header选项允许在这种情况下产生一个HTTP错误码 以使 ...
- 如何设置eclipse格式化xml代码时不自动换行
如何设置eclipse格式化代码时不自动换行 2015年12月23日 09:08:36 qq_20889581 阅读数:3770 标签: eclipse格式化android 更多 个人分类: Ecli ...
- P1801 黑匣子_NOI导刊2010提高(06)
P1801 黑匣子_NOI导刊2010提高(06) 题目描述 Black Box是一种原始的数据库.它可以储存一个整数数组,还有一个特别的变量i.最开始的时候Black Box是空的.而i等于0.这个 ...
- 替换换行符:回车换行CR/LF
windows采用回车+换行CR/LF表示下一行,UNIX/Linux使用换行符LF表示下一行,MAC OS系统使用用回车符CR表示下一行. CR使用符号'\r'表示, ASCII码是13: LF使用 ...
- struts2的action中@Autowired注入为null的解决方案
今天遇到类似问题,记录下来以便以后查阅: @Aspect作用于action,致使action中的@Autowired注入为null的解决方案,以下三种任选一种: 1.去掉@Autowired,改用se ...
- bzoj 2502 清理雪道 (有源汇上下界最小流)
2502: 清理雪道 Time Limit: 10 Sec Memory Limit: 128 MB Description 滑雪场坐落在FJ省西北部的若干座山上. 从空中鸟瞰,滑雪场 ...
- HDU 5145 分块 莫队
给定n个数,q个询问[l,r]区间,每次询问该区间的全排列多少种. 数值都是30000规模 首先考虑计算全排列,由于有同种元素存在,相当于每次在len=r-l+1长度的空格随意放入某种元素即$\bin ...
- excel表格添加固定宽高的图片
import xlsxwriter,xlrd import glob #打开excel文件 data=xlrd.open_workbook('优秀创意库-20180725.xlsx') #获取第一张工 ...