洛谷 P4859 && BZOJ3622: 已经没有什么好害怕的了
题目描述
给出 \(n\) 个数 \(a_i\) ,以及 \(n\) 个数 \(b_i\) ,要求两两配对使得 \(a>b\) 的对数减去 \(a<b\) 的对数等于 \(k\) 。
\(0≤k≤n≤2000\),保证 \(a,b\) 无相同元素。
题解
我们假设 \(a>b\) 对数为 \(x\) ,可以求得 \(x=\frac{n+k}{2}\) 。
先对两个数组都排序
设\(pos[i]\)表示最大的\(j\)使得\(a_i>b_j\)
我们令 \(f_{i,j}\) 表示前 \(i\) 个 \(a\) 中,选了 \(j\) 组满足 \(a>b\) 的方案数。(注意不是前i个\(b\))
\(f_{i,j}\) = \(f_{i-1, j-1} + f_{i-1, j-1} * (pos[i]-j+1)\)
然而,这样弄完后,我们会发现会发现计算中的方案可以选多余\(j\)组,这样就会算重复许多方案
考虑如何去重
设\(g[i]\)表示前i个a,恰好选了\(j\)组
\(g[i]=f[n][i]∗(n−i)!−∑g[j] * C_j^i, (i<j≤n)\)
因为不知道a里面剩下的\(n-i\)个数是怎么匹配的,但是一定有\((n−i)!\)种匹配情况,这些情况里包含了恰好有j组a大于b的情况\((i<j)\),j组被计算到的次数是 \(C_j^i\) 种,所以减去,\(g[m]\)即是答案
Code
#include<bits/stdc++.h>
#define LL long long
#define RG register
using namespace std;
inline int gi() {
int f = 1, s = 0;
char c = getchar();
while (c != '-' && (c < '0' || c > '9')) c = getchar();
if (c == '-') f = -1, c = getchar();
while (c >= '0' && c <= '9') s = s*10+c-'0', c = getchar();
return f == 1 ? s : -s;
}
const int N = 2010, Mod = 1e9+9;
int a[N], b[N], pos[N];
LL jc[N], C[N][N], f[N][N], g[N];
int main() {
int n = gi(), m = gi();
if ((n+m)&1) {
printf("0\n");
return 0;
}
m = (n+m)>>1;
for (int i = 1; i <= n; i++) a[i] = gi();
for (int i = 1; i <= n; i++) b[i] = gi();
sort(a+1, a+1+n); sort(b+1, b+1+n);
for (int i = 1; i <= n; i++) {
int p = 0;
while (p < n && b[p+1] < a[i]) p++;
pos[i] = p;
}
for (int i = 0; i <= n; i++)
C[i][0] = 1;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= i; j++)
C[i][j] = (C[i-1][j-1] + C[i-1][j]) % Mod;
jc[0] = jc[1] = 1;
for (int i = 2; i <= n; i++)
jc[i] = jc[i-1]*i%Mod;
f[0][0] = 1;
for (int i = 1; i <= n; i++) {
for (int j = 0; j <= i; j++) {
if (pos[i] >= j)
f[i][j] = (f[i-1][j] + f[i-1][j-1]*(pos[i]-j+1))%Mod;
}
}
for (int i = n; i >= m; i--) {
g[i] = f[n][i]*jc[n-i];
for (int j = i+1; j <= n; j++)
g[i] = (g[i]-g[j]*C[j][i]%Mod+Mod)%Mod;
}
printf("%lld\n", g[m]);
return 0;
}
洛谷 P4859 && BZOJ3622: 已经没有什么好害怕的了的更多相关文章
- 题解-洛谷P4859 已经没有什么好害怕的了
洛谷P4859 已经没有什么好害怕的了 给定 \(n\) 和 \(k\),\(n\) 个糖果能量 \(a_i\) 和 \(n\) 个药片能量 \(b_i\),每个 \(a_i\) 和 \(b_i\) ...
- 洛谷4859 BZOJ3622 已经没什么好害怕的了(DP,二项式反演)
题目链接: 洛谷 BZOJ 题目大意:有两个长为 $n$ 的序列 $a,b$,问有多少种重排 $b$ 的方式,使得满足 $a_i>b_i$ 的 $i$ 的个数比满足 $a_i<b_i$ 的 ...
- 洛谷P4859 已经没有什么好害怕的了 [DP,容斥]
传送门 思路 大佬都说这是套路题--嘤嘤嘤我又被吊打了\(Q\omega Q\) 显然,这题是要\(DP\)的. 首先思考一下性质: 为了方便,下面令\(k=\frac{n+k}{2}\),即有恰好\ ...
- 洛谷 P4859 已经没有什么好害怕的了 解题报告
已经没有什么好害怕的了 题目描述 已经使\(\tt{Modoka}\)有签订契约,和自己一起战斗的想法后,\(\tt{Mami}\)忽然感到自己不再是孤单一人了呢. 于是,之前的谨慎的战斗作风也消失了 ...
- 洛谷P4859 已经没有什么好害怕的了
因为不存在任意两个数相同,那么设糖果比药片大的组有 \(x\) 个,药片比糖果大的组有 \(y\) 个,那么我们有: \[x + y = n, x - y = k \] 即: \[x = \frac{ ...
- 洛谷1640 bzoj1854游戏 匈牙利就是又短又快
bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类 ...
- 洛谷P1352 codevs1380 没有上司的舞会——S.B.S.
没有上司的舞会 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description Ural大学有N个职员,编号为1~N.他们有 ...
- 洛谷P1108 低价购买[DP | LIS方案数]
题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它 ...
- 洛谷 P2701 [USACO5.3]巨大的牛棚Big Barn Label:二维数组前缀和 你够了 这次我用DP
题目背景 (USACO 5.3.4) 题目描述 农夫约翰想要在他的正方形农场上建造一座正方形大牛棚.他讨厌在他的农场中砍树,想找一个能够让他在空旷无树的地方修建牛棚的地方.我们假定,他的农场划分成 N ...
随机推荐
- CSS 内容生成
原文地址:http://www.zhangxinxu.com/wordpress/?p=739 一.哗啦哗啦的简介 zxx://这里“哗啦哗啦”的作用是为了渲染一种氛围.content属性早在CSS2 ...
- SQL Server 触发器触发器
内容摘抄自http://www.cnblogs.com/hoojo/archive/2011/07/20/2111316.html,只供自己笔记使用 触发器是一种特殊类型的存储过程,它不同于之前的我们 ...
- WebFlux01 webflux概念、异步servlet、WebFlux意义
1 概念 待更新...... 2 异步servlet 2.1 同步servlet servlet容器(如tomcat)里面,每处理一个请求会占用一个线程,同步servlet里面,业务代码处理多久,se ...
- ubunt 14.04 Could not find CMAKE_ROOT !!! CMake has most likely not been installed correctly. Modul
CMake Error: Could not find CMAKE_ROOT !!! CMake has most likely not been installed correctly. Modul ...
- 用CSS3.0画圆
CSS3.0中有一个border-radius属性,这个属性允许向 div 元素添加圆角边框,也就是div边角不再一直是直角,在CSS3.0中可以做成圆角了,所以我们可以用这个属性用div画一个圆,或 ...
- Asp.net MVC获取访问系统的客户端计算机的主机名和IP地址
string HostName = string.Empty; string ip = string.Empty; string ipv4 = String.Empty; if (!string.Is ...
- Struts2 让跳转指定执行某个方法
很多时候,我们想让jsp页面中的某个超链接,点击后执行后台的某个方法,里面该如何做呢? 这里方法很多种 我举例两种: 1.在struts.xml配置,配置如下: <package name=&q ...
- 三维GIS
三维GIS数据结构 三维GIS数据库 三维渲染显示 点云处理 cnki:http://kns.cnki.net/kns/brief/default_result.aspx
- 树莓派_实现摄像头的拍照、监控与录像(Raspiberry PI Camera 5W)
学无止境 前言:大家好,欢迎来到誉雪飞舞的博客园,我的每篇文章都是自己用心编写, 算不上精心但是足够用心分享我的自学知识,希望大家能够指正我,互相学习成长. 转载请注明:https://www. ...
- 「BZOJ 5188」「Usaco2018 Jan」MooTube
题目链接 luogu bzoj \(Describe\) 有一个\(n\)个节点的树,边有权值,定义两个节点之间的距离为两点之间的路径上的最小边权 给你\(Q\)个询问,问你与点\(v\)的距离大于等 ...