Jzoj5429 排列

jzoj6407 【NOIP2019模拟11.05】小 D 与随机 (容斥计数) 外向树计数 容斥 氪金手游 阅读详情

有两个长度为n的排列A和B,定义排列的价值f(A,B)为所有满足A[i]>B[i]的位置i的数量。
现给出n,A,B和S,其中A和B中有一些位置的数未知,问有多少种可能的填数的方案使得f(A,B)=S

保证不存在一个位置i满足A[i]=0且B[i]=0

十分有趣的题目,是个神奇的组合数学+dp

我们先将问题拆成两个,因为题目保证没有A[i]=B[i]=0的位置

我们将所有A[i]=0的B[i]取出来,将这些元素排序得到x

再将所有不在A中的元素取出来排序得到y,设长度为m

那么,我们设一个dp

f[i][j]表示已经做到第i个数,其中已经保证有j个位置有贡献,其余位置情况不清楚的方案数

那么f[i][j]=f[i-1][j]+f[i-1][j-1]*(k-j){ k是满足x[k-1]<y[i]的最大的k }

我们令g[j]表示f[m][j]*(m-j)! 这样就得到了最终的方案数(因为对于其余位置不清楚的情况,可以随意调换位置)

我们现在可以用容斥原理来计算贡献恰好为j的g'[j],那么显然g'[m]=g[m]

让后可以得到g'[j]=g[j]-Σg'[i]*C(j,i) {j<i<=m} 倒序计算即可

让后类似的我们可以将B[i]=0的A[i]取出来做一次类似的dp,也求出一个g''

那么答案就是Σg'[i]*g''[i-s](0<=i<=S)

感觉讲的比较不清楚,可以好好理解一下

(十月份都是什么题啊!!!!!!!)

#pragma GCC optimize("O3")
#pragma G++ optimize("O3")
#include<stdio.h>
#include<string.h>
#include<algorithm>
#define N 4010 
#define LL long long 
#define M 1000000007 
using namespace std;
bool va[N],vb[N];
int a[N],b[N],n,m,s,x[N],y[N];
LL js[N],inv[N],f[N],g[N],Answer=0;
inline LL C(int n,int m){ return js[n]*inv[m]%M*inv[n-m]%M; }
inline LL pow(LL x,int k,LL S=1){
	for(;k;x=x*x%M,k>>=1) if(k&1) S=S*x%M;
	return S;
}
int main(){
	freopen("arrange.in","r",stdin);
	freopen("arrange.out","w",stdout);
	scanf("%d%d",&n,&s);
	for(int i=*js=*inv=1;i<=n;++i) js[i]=js[i-1]*i%M;
	for(inv[n]=pow(js[n],M-2);;) break;
	for(int i=n;i;--i) inv[i-1]=inv[i]*i%M; 
	for(int i=1;i<=n;++i){
		scanf("%d",a+i);
		va[a[i]]=1;
	}
	for(int i=1;i<=n;++i){
		scanf("%d",b+i); 
		vb[b[i]]=1;
		if(a[i]&&b[i]&&a[i]>b[i]) --s;
	}
	m=0;
	for(int i=1;i<=n;++i) if(!a[i]) x[++m]=b[i];
	sort(x+1,x+1+m); m=0;
	for(int i=1;i<=n;++i) if(!va[i]) y[++m]=i;
	f[0]=1;
	for(int i=1,k=1;i<=m;++i){
		for(;k<=m && y[i]>x[k];++k);
		for(int j=i;j;--j) f[j]=(f[j]+f[j-1]*(k-j))%M;
	}
	for(int i=m;~i;--i){
		f[i]=(f[i]*js[m-i])%M;
		for(int j=i+1;j<=m;++j) f[i]=(f[i]+M-f[j]*C(j,i)%M)%M;
	}
	m=0;
	for(int i=1;i<=n;++i) if(!b[i]) x[++m]=a[i];
	sort(x+1,x+1+m); m=0; 
	for(int i=1;i<=n;++i) if(!vb[i]) y[++m]=i;
	for(int i=1;i<=m;++i) swap(x[i],y[i]);
	g[0]=1;
	for(int i=1,k=1;i<=m;++i){
		for(;k<=m && y[i]>x[k];++k);
		for(int j=i;j;--j) g[j]=(g[j]+g[j-1]*(k-j))%M;
	}
	for(int i=m;~i;--i){
		g[i]=(g[i]*js[m-i])%M;
		for(int j=i+1;j<=m;++j) g[i]=(g[i]+M-g[j]*C(j,i)%M)%M;
	}
	for(int i=0;i<=s;++i) Answer=(Answer+f[i]*g[s-i]%M)%M;
	printf("%lld\n",Answer);
}

通过PXE的方式实现Ubuntu 24.04 自动安装 之前都是通过PXE来自动化安装Redhat系列的,例如:Rocky9、Rocky10、CentOS7、银河麒麟 Kylin-V10、Kylin-V11、OpenEuler 24.03等。现在安装Ubuntu系列的跟红帽的不太一样,所以在这里介绍下。 阅读详情

相关推荐

基于人脸识别的驾驶员疲劳检测方法研究

摘 要交通安全问题愈发严重,疲劳驾驶已是造成交通事故的主要因素之一。为减少因疲劳驾驶造成的交通事故,本文设计了一种基于图像处理技术的疲劳驾驶监测系统,该系统结合了肤色模型、灰度积分投影技术以及PERCLOS方法,旨在通过实时视频图像分析准确检测驾驶员的疲劳状态。首先,系统通过肤色模型从图像中有效提取人脸区域,并在此基础上利用Haar级联分类器进行人脸检测,确保在人脸角度变化或部分遮挡的情况下依然能够实现高效识别。接着,灰度积分投影技术被应用于眼部定位,通过分析眼睛区域的灰度变化,精确确定眼睛的上下边界,从

carrott0617的博客 1005

【JZOJ 5429】【NOIP2017提高A组集训10.27】排列

Description有两个长度为n的排列A和B,定义排列的价值f(A,B)为所有满足A[i]>B[i]的位置i的数量。 现给出n,A,B和S,其中A和B中有一些位置的数未知,问有多少种可能的填数的方案使得f(A,B)=SSolution先把原序列拆成两个,一个a全为0,一个b全为0,俩都不为0的直接计算删掉,看到这种题考虑先计算>=S>=S的,再减掉>=S+1>=S+1的, 计算>=k>=k的

478

深入傅里叶级数与傅里叶变换:从基础到应用

傅里叶分析为我们提供了一种理解信号频率结构的强大工具。从傅里叶级数到傅里叶变换,再到快速傅里叶变换(FFT),其理论与应用紧密结合,对现代科学技术的发展意义非凡。如果你对信号处理、数据分析或工程计算感兴趣,傅里叶分析是必须掌握的基础工具。希望本文能帮助你对傅里叶分析有更深入的理解!如果有问题或想法,欢迎在评论区讨论!

qq_56683019的博客 3519

[JZOJ5429]【NOIP2017提高A组集训10.27】排列

Description 有两个长度为n的排列A和B,定义排列的价值f(A,B)为所有满足A[i]>B[i]的位置i的数量。 现给出n,A,B和S,其中A和B中有一些位置的数未知,问有多少种可能的填数的方案使得f(A,B)=S 对于100%的数据满足,1<=S<=n<=4000 保证不存在一个位置i满足A[i]=0且B[i]=0 Solution直接做很难做,不妨考虑转化一下

Never give in. 244

Vue+ECharts-GL 3D地图实战:5层叠加打造炫酷中国地图(附完整代码)

本文详细介绍了如何利用Vue和ECharts-GL构建具有强烈立体感的3D中国地图。通过5层图层的巧妙叠加与样式调校,实现了从背景阴影到交互高光的完整视觉层次,并整合了动态飞线与散点标记。文章提供了完整的代码实现、核心配置解析以及性能优化与视觉调优的实战技巧,帮助开发者快速打造专业级的交互式地图可视化应用。

d6e7f8g9h的博客 649

R语言广义加型模型(GAM)的运用例子及实现教程

一旦拟合了广义加型模型,我们可以查看模型摘要和诊断,以评估模型的质量和拟合情况。# 查看模型摘要响应变量:mpg(汽车的燃油效率)拟合函数:mpg ~ s(hp) + s(wt)

Mrrunsen的博客 3445

【JZOJ5429】【NOIP2017提高A组集训10.27】排列

Description有两个长度为n的排列A和B,定义排列的价值f(A,B)为所有满足A[i]>B[i]的位置i的数量。 现给出n,A,B和S,其中A和B中有一些位置的数未知,问有多少种可能的填数的方案使得f(A,B)=SData Constraint对于20%的数据满足,1<=n<=10 对于50%的数据满足,1<=n<=20 对于70%的数据满足,1<=n<=200 对于100%的数据满

dance in th dark的博客 678

CEEMDAN算法及其应用

本博文主要介绍CEEMDAN算法的原理及其在信号去噪方面的应用

总结论文中的算法并给出论文的复现代码 6万+

JZOJ5429. 【NOIP2017提高A组集训10.27】排列 DP+容斥

Description有两个长度为n的排列A和B,定义排列的价值f(A,B)为所有满足A[i]>B[i]的位置i的数量。 现给出n,A,B和S,其中A和B中有一些位置的数未知,问有多少种可能的填数的方案使得f(A,B)=SInput第一行两个整数n和S 第二行n个数表示排列A 第三行n个数表示排列B 其中A和B中某些位置是0表示当前位置上的数还未确定,保证不存在一个位置i满足A[i]=0且B

老臣 542

【微服务】Spring Aop原理深入解析

spring原理深度解析

congge 1万+

YOLOv26详解 | 一文带你从代码角度深入理解ultralytics最新作品yolov26的创新 | 训练、推理、验证、导出 (附网络结构图PPT可用,全网最全)

YOLOv26带来多项创新:1)采用双检测头机制(One-to-Many和One-to-One)实现端到端无NMS推理;2)移除DFL简化边界框回归;3)引入ProgLoss+STAL优化小目标检测;4)使用MuSGD优化器提升训练稳定性。网络结构方面,SPPF模块增加shortcut连接,并在C3k2中引入PSABlock注意力机制。该版本更注重实际部署,简化了推理流程,提升硬件兼容性。教程涵盖模型训练、验证、推理及导出全流程,支持多种格式转换如ONNX、TensorRT等,适合工业应用场景。

Snu77的博客 4063

JZOJ 5429 排列

排列Description有两个长度为nn的排列AA和BB,定义排列的价值ff(AA,BB)为所有满足AiA_i>BiB_i的位置i的数量。 现给出nn,AA,BB和SS,其中AA和BB中有一些位置的数未知,问有多少种可能的填数的方案使得ff(AA,BB)=SS。 若第ii位上位置则为00。 答案可能很大,对10910^9+77取模。Data Constraint11<=SS<=nn<=4∗1

XianHaoMing的博客 394

ROS机器人未知环境自主探索功能包explore_lite最全源码详细解析(一)

本系列文章主要针对ROS机器人常使用的未知环境自主探索功能包explore_lite展开全源码的详细解析,并进行概括总结。 本系列文章共包含六篇文章,前五篇文章主要介绍explore_lite功能包中 explore.cpp、costmap_tools.h、frontier_search.cpp、costmap_client.cpp等源码实现文件中全部函数的详细介绍,第六篇文章进行概括总结,包含自主探索功能包explore_lite的简介,实现未知环境自主探索功能的原理及流程总结,效果演示,使用功能包

慕羽★的博客 3936

【bzoj 3622】【JZOJ 5429】 排列

Description给两组 n 个数 a[], b[] ,保证数字互不相同,问有多少种将它们配对的方式,使得 a[i] > b[i] 的对数恰好为 k 1<=k<=n<=4000Analysis看到恰好,这肯定很难做的,考虑套路:转化成至少再减去多的 那么我们可以开始愉快地dp 设f[i][j]表示上面到第i个数,保证形成了j个贡献的方案数 f[i][j]=f[i−1][j](不匹配)+f

LYD729 326

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

别再死记0.7V了!三极管Ube的‘变与不变’,我用Multisim仿真给你看明白

本文通过Multisim仿真实验深入解析三极管Ube电压的静态与动态特性,揭示其并非恒定的0.7V,而是受温度、电流等因素影响。文章详细展示了共射放大电路的搭建过程、DC扫描分析及动态信号下的Ube变化,帮助读者理解Ube的实际行为及其在电路设计中的关键作用。

weixin_30536513的博客 403

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

【NOIP 2017】赛季正式打响!

传送门: NOIP2017 检查清单 2017的赛季正式打响了!加油干啊同志们,这里就记录一下我到底干了什么吧~,10_21【JZOJ 5407】【NOIP2017提高A组集训10.21】Deep 【JZOJ 5408】【NOIP2017提高A组集训10.21】Dark 【JZOJ 5409】【NOIP2017提高A组集训10.21】Fantasy小结T1没有去尝试找规律,不能懒啊 T3有

1135

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

排列问题(DP)

题意 长度为N的排列是一个序列(a,a,...,a)(a,a,...,a)(a , a , ..., a ),恰好包含从111到NNN的每一个数字。例如,(3,1,4,5,2)(3,1,4,5,2)(3, 1, 4, 5, 2)是 一个长度为5的排列。 对于两个排列a和b,定义 magic(a,b)=max(a,b)+max(a,b)+...+max(a,b)magic(a,b)=max(...

CaptainChen的博客 1391

Jzoj3163 排列

给你M个对1到N的排列的特征,特征有两种: 1xyv:排列的第x个数到第y个数之间的最大值为v 2xyv:排列的第x个数到第y个数之间的最小值为v 要求你还原出这个排列(N<=200,M<=40000) 刷水题有利于身心健康 但你还不是不会做?额这 想必许多人看完题目就知道怎么做了吧,才200直接二分图匹配就搞定了啊,O(NM)建图没问题 (另外,2014年那...

dianning8393的博客 207

【jzoj5235】好的排列

题目描述 对于一个1->n的排列 ,定义A中的一个位置i是好的,当且仅当Ai-1>Ai 或者Ai+1>Ai。对于一个排列A,假如有不少于k个位置是好的,那么称A是一个好的排列。  现在有q个询问,每个询问给定n,k,问有多少排列是好的。答案对10^9+7取模。输入  首先输入q。  接下来输入q个询问n,k 。输出  输出q行,每行一个整数代表答案。样例输入...

weixin_30514745的博客 512

JZOJ 5409 【NOIP2017提高A组集训10.21】Fantasy

FantasyDescription给出一个长度为nn的序列AA。 对于这个序列的每一个子串,定义其价值为这个子串的和。 问选择KK个不同的子串的价值之和的最大值。 其中题目有一个特殊限制,选择出来的这些子串的长度必须在LL到RR之间。Data Constraint11<=nn,KK<=10510^5 11<=LL<RR<=NN, |AiA_i|<=10410^4Solution方法一:

XianHaoMing的博客 475

JZOJ5922. 【NOIP2018模拟10.23】sequence

传送门 preface     这道题想了好久好久主要是菜,但其实并不是很难,大佬现在走还来得及。。。。 分析   这道题乍一看没什么想法,暴力50pts骗走溜掉。但其实那个特殊点提示很大。   对于第5个点的话,把式子化简出来就是i-l+1,i-l+2...就这个点而言,就可以开两个差分数组f,g,分别表示第i个位置的一次项系数和常数的差分。更新就变成了O(1)的。   再...

weixin_30483697的博客 150

[JZOJ5728] 简单计数|| 容斥+处理环上问题

先考虑链上的做法。 先预处理fi,jfi,jf_{i,j}表示iii个元素分到jjj个集合中,所有集合大小之积的和,fi,j=k⋅fi−k,j−1fi,j=k⋅fi−k,j−1f_{i,j}=k\cdot f_{i-k,j-1}。 那么假如第iii种数字的cicic_i个被分成了aiaia_i个,那么问题就转化成有nnn种颜色的球,第iii种球有aiaia_i个,求排列这些球使得相邻球不同色的...

DOFYPXY的博客 554

JZOJ 5947. 【NOIP2018模拟11.02】初音未来(miku)

Description Hercier作为一位喜爱Hatsune Miku的OIer,痛下决心,将Vocaloid买回了家。打开之后,你发现界面是一个长为n的序列,代表音调,并形成了全排列。你看不懂日语,经过多次尝试,你只会用一个按钮:将一段区间按升序排序。不理解音乐的Hercier决定写一个脚本,进行m次操作,每次对一段区间进行操作。可惜Hercier不会写脚本,他找到了在机房里的你,请你模拟出...

Felix-Lee的博客 666

【JZOJ4474】【luoguP4071】排列计数

description 求有多少种长度为 n 的序列 A,满足以下条件: (1)1 ~ n 这 n 个数在序列中各出现了一次 (2)若第 i 个数 A[i] 的值为 i,则称 i 是稳定的。序列恰好有 m 个数是稳定的 满足条件的序列可能很多,序列数对 10^9+7 取模。 analysis 首先nnn个里有mmm个稳定但不确定顺序,所以有CnmC^{m}_{n}Cnm​种方案 剩下n−...

路人黑的纸巾 1112
上一篇: Jzoj5428 查询
下一篇: Jzoj5431 序列操作
扩展的灰
博客等级 码龄12年 60粉丝 342原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值