Luogu P4859「已经没有什么好害怕的了」
以前开过一遍这题,以为很难没刚下去
今天$ review$一遍分析了一下感觉也还好
题意:给定长度为$ n \leq 2000$的数组$ A,B$求完全匹配使得$A>B$的对数比$A<B$的对数恰好多$k$组的方案数
$ Solution:$
直接$DP $是$ n^3$的
考虑容斥 先将$ A,B$从小到大排序
设$ F_{i,j}$表示只考虑$ A$的前$ i$个物品,进行了$ j$次匹配均满足$ A>B$的方案数
显然每次$ A$能转移的是$B$的一段前缀区间,且$ i$前面匹配到的$B$一定在当前前缀区间内
有转移式:
$F_{i,j}=F_{i-1,j}+(now_i-j+1)·F_{i-1,j-1}$
其中$ now_i$表示最靠右的比$ A_i$小的$B$数组的位置
令$ g_i=F_{n,i}*(n-i)!$,则$ g_i$表示有至少$ i$对$ A>B$的对数的方案数
令$ f_i$表示有恰好$ i$对$ A>B$的对数的方案数
则根据定义有
$ g_i=\sum\limits_{j=i}^n \binom{j}{i}f_j$
二项式反演得
$ f_i=\sum\limits_{j=i}^n(-1)^{j-i} \binom{j}{i}g_j$
时间复杂度$ O(n^2)$
$ my \ code$
#include<ctime>
#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<queue>
#define p 1000000009
#define rt register int
#define ll long long
using namespace std;
inline ll read(){
ll x = ; char zf = ; char ch = getchar();
while (ch != '-' && !isdigit(ch)) ch = getchar();
if (ch == '-') zf = -, ch = getchar();
while (isdigit(ch)) x = x * + ch - '', ch = getchar(); return x * zf;
}
void write(ll y){if(y<)putchar('-'),y=-y;if(y>)write(y/);putchar(y%+);}
void writeln(const ll y){write(y);putchar('\n');}
int i,j,k,m,n,x,y,z,cnt;
int a[],b[],inv[],g[];
int main(){
n=read();m=read();
inv[]=inv[]=;
for(rt i=;i<=n;i++)inv[i]=1ll*inv[p%i]*(p-p/i)%p;
if(n+m&)return write(),;
for(rt i=;i<=n;i++)a[i]=read();
for(rt i=;i<=n;i++)b[i]=read();
sort(a+,a+n+);sort(b+,b+n+);
int R=;g[]=;
for(rt i=;i<=n;i++){
while(a[i]>b[R+]&&R<n)R++;
for(rt j=i;j>=;j--)
(g[j]+=1ll*g[j-]*(R-j+)%p)%=p;
}
for(rt i=,sum=;i<=n;i++){
sum=1ll*sum*i%p;
g[n-i]=1ll*g[n-i]*sum%p;
}
m=(n+m)/;int ans=;
for(rt i=m,tag=,C=;i<=n;i++,tag*=-){
(ans+=1ll*g[i]*C*tag%p)%=p;
C=1ll*C*(i+)%p*inv[i-m+]%p;
}
cout<<(ans+p)%p;
return ;
}
Luogu P4859「已经没有什么好害怕的了」的更多相关文章
- [Luogu 3701] 「伪模板」主席树
[Luogu 3701] 「伪模板」主席树 这是一道网络流,不是主席树,不是什么数据结构,而是网络流. 题目背景及描述都非常的暴力,以至于 Capella 在做此题的过程中不禁感到生命流逝. S 向 ...
- 从0開始学习 GitHub 系列之「07.GitHub 常见的几种操作」
之前写了一个 GitHub 系列,反响非常不错,突然发现居然还落下点东西没写,前段时间 GitHub 也改版了,借此机会补充下. 我们都说开源社区最大的魅力是人人多能够參与进去,发挥众人的力量,让一个 ...
- 互联网巨头们的 SRE 运维实践「GitHub 热点速览 v.21.27」
作者:HelloGitHub-小鱼干 本周大热点无疑是前几天 GitHub 发布的 Copilot,帮你补全代码,给你的注释提出建议,预测你即将使用的代码组件-如此神奇的 AI 技术,恰巧本周微软也开 ...
- 获取 Windows 密码「GitHub 热点速览 v.21.28」
作者:HelloGitHub-小鱼干 安全问题一直是 GitHub 的一大热点,因为数据安全问题诞生的各类自托管服务便是.而本周周榜上的 2 个和安全主题相关的项目,有些不同.mimikatz 是个老 ...
- AI 预测蛋白质结构「GitHub 热点速览 v.21.29」
作者:HelloGitHub-小鱼干 虽然 AI 领域藏龙卧虎,但是本周预测蛋白质结构的 alphafold 一开源出来就刷爆了朋友圈,虽然项目与我无关,但是看着科技进步能探寻到生命机理,吃瓜群众也有 ...
- 在线体验 Windows 11「GitHub 热点速览 v.21.30」
作者:HelloGitHub-小鱼干 有什么比无需安装系统,检测硬件兼容度,只要打开一个浏览器,输入某个神秘的地址回车,即可体验 Windows 11 更棒的呢?windows11 就是这么一个小工具 ...
- 自制车速记录仪「GitHub 热点速览 v.21.31」
作者:HelloGitHub-小鱼干 如果你有一辆普通的自行车,那么就可以使用下 X-TRACK 这个项目制作一个自己的测速器,记录你的行驶轨迹还有车速,体验一把硬件发烧友的乐趣.如果你有一个非 ma ...
- 那些 Unix 命令替代品们「GitHub 热点速览 v.21.32」
作者:HelloGitHub-小鱼干 好用的 Unix 命令替代工具能让你事半功倍,例如,bat 便是个带着高亮特性的加强版 cat,就像你用了 oh my zsh 之后便会感受到它的强大.同样好用的 ...
- 面试反杀「GitHub 热点速览 v.21.33」
作者:HelloGitHub-小鱼干 作为一个应聘者,面试的时候经常会被面试官问:你有什么问题要问我吗?为了避免这种临时想不到问题的尴尬,reverse-interview-zh 会教你下反向操作,提 ...
随机推荐
- 以Attribute加上Header验证
建立新FilterAttribute继承AuthorizationFilterAttribute,覆写OnAuthorization拦截传入的HttpActionContext内容判断是否有传入指定的 ...
- python中的单例模式、元类
单例模式 单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在.当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场. ...
- 第十六节、特征描述符BRIEF(附源码)
我们已经知道SIFT算法采用128维的特征描述子,由于描述子用的是浮点数,所以它将会占用512字节的空间.类似的SUFR算法,一般采用64维的描述子,它将占用256字节的空间.如果一幅图像中有1000 ...
- 函数:PHP将字符串从GBK转换为UTF8字符集iconv
1. iconv()介绍 iconv函数可以将一种已知的字符集文件转换成另一种已知的字符集文件.例如:从GB2312转换为UTF-8. iconv函数在php5中内置,GB字符集默认打开. 2. ic ...
- C内存分配
calloc和realloc与malloc的区别 calloc和realloc的原型如下: void *calloc ( size_t num_elements, size_t element_siz ...
- vmstat命令详解
一:简介 vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存.进程.CPU活动进行监控.他是对系统的整体情况进行统计,不足之处是无法对某个 ...
- linux driver ------ platform模型,驱动开发分析
一.platform总线.设备与驱动 在Linux 2.6 的设备驱动模型中,关心总线.设备和驱动3个实体,总线将设备和驱动绑定.在系统每注册一个设备的时候,会寻找与之匹配的驱动:相反的,在系统每注册 ...
- 微信小程序中出现:脚本错误或者未正确调用 Page()
错误: 解决方法: //在页面当中的.js文件里面加上 Page({ })即可
- 定时任务调度-Celery
确保任务不重叠解决方法: from celery import task from celery.five import monotonic from celery.utils.log import ...
- Web APi入门之Self-Host寄宿及路由原理
前言 刚开始表面上感觉Web API内容似乎没什么,也就是返回JSON数据,事实上远非我所想,不去研究不知道,其中的水还是比较深,那又如何,一步一个脚印来学习都将迎刃而解. Self-Host 我们知 ...