[AGC030F]Permutation and Minimum

news/2025/11/16 15:38:51/文章来源:https://www.cnblogs.com/gold-spade/p/19228296

Description

给定一个长为 \(2n\) 的序列 \(A\),其中 \(A\) 的每一位要么是 \(-1\),要么是 \(1\sim 2n\) 的一个数。将每个 \(A_i=-1\) 替换为 \(1 \sim 2n\) 的某个数,使 \(A\) 成为一个长 \(2n\) 的排列。令长为 \(n\) 的序列 \(B\)\(B_i=\min \{A_{2i-1},A_{2i}\}\),求可能的 \(B\) 序列个数。

Solution

可以将原序列分为 \(n\) 个组,组内下标为 \(2i-1,2i\)

那么有 3 种情况:

  1. 两个数分别为 \(-1,-1\)
  2. 其中一个为 \(-1\),另一个的值是确定的。
  3. 两个数的值都是确定的。

第 3 种情况是朴素的,因为该组生成的 \(B_i\) 是确定的,可以考虑直接排除掉。

考虑剩下两种情况。由于 \(\min\) 的存在,很容易想到从大到小枚举填哪个值。我们发现原序列的各组顺序没有影响,因此钦定 \(B\) 从大到小排序。考虑 dp,每次转移时我们需要知道:

满足情况 1 的组个数,满足情况 2 的组个数。

如果继续这样思考仍然是可做的,但是不妨换一个角度。我们只关心 \(-1\) 的个数和 \(A_i\neq -1\) 的数的个数。首先每个 \(A_i\neq-1\) 对应一个情况 2 的组。那么相当于一个匹配问题,每个 \(A_i=-1\) 可以对应一个 \(A_j=-1\)\(A_{j}\neq -1\),这样匹配完成了过后,等价于原序列中的情况 1. 和 2. 的组。

那么原问题转化为(先删掉所有情况 3 的组):

有若干个 \(-1\) 和值域在 \(1 \sim 2n\) 的数。每个 \(\neq -1\) 的数都必须匹配一个 \(-1\)\(-1\) 可以任意匹配。

匹配完成后,将 \(-1\) 替换为 \(1 \sim 2n\) 的值,要求所有数互不相同,求每对匹配的最小值序列个数。

定义 \(f_{i,j,k}\) 表示考虑填一个值 \(i\),前面有 \(j\)\(-1\)\(k\)\(\neq -1\) 的方案数:

  1. 原序列存在 \(i\)
    • 选择匹配一个 \(-1\)\(f_{i,j,k} \to f_{i-1,j-1,k}\)
    • 选择不匹配,与后面的匹配:\(f_{i,j,k} \to f_{i-1,j,k+1}\)
  2. 原序列不存在 \(i\):(当前这个值一定是从 \(-1\) 变过来的)
    • 选择匹配一个 \(-1\)\(f_{i,j,k} \to f_{i-1,j-1,k}\)
    • 选择匹配一个 \(\neq -1\)\(\neq-1\) 的原序列对应组是确定的,因此互不相同,乘一个系数):\(f_{i,j,k}\times k \to f_{i,j,k-1}\)
    • 不匹配,与后面的匹:\(f_{i,j,k} \to f_{i,j+1,k}\)

初值:\(f_{2n,0,0}\),答案:\(f_{0,0,0} \times c!\)\(c\) 是原序列 \((-1,-1)\) 组的个数,由于刚刚没考虑他们顺序,需要乘一个系数。

code

Click to View Code
#include <bits/stdc++.h>
#define rep(i, l, r) for (int i = l; i <= r; ++i)
#define per(i, r, l) for (int i = r; i >= l; --i)
#define int long long
#define LL long long
#define ull unsigned long long
#define FRE(p) freopen(#p".in", "r", stdin),freopen(#p".out","w",stdout)
#define DBG(p) freopen(#p".in", "r", stdin),freopen("my.out","w",stdout)
#define FASTIO ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
using namespace std;
const int N = 605, M = 505, mod = 1e9+7;
int n, a[N], f[N][N][N];
int bj[N];
inline void cadd(int& x, int y) {x = (x+y)%mod;
}
int fac[N];
signed main() {
#ifdef LOCALFRE(bomb);
#endifFASTIO;cin >> n;fac[0] = 1;rep(i, 1, (n<<1)) cin >> a[i], bj[max(0ll, a[i])]=1, fac[i] = fac[i-1]*i%mod;int tmp = 0;rep(i, 1, n) {tmp += a[i<<1]==-1&&a[(i<<1)-1]==-1;if (a[i<<1]>0&&a[(i<<1)-1]>0) {bj[a[i<<1]] = 2, bj[a[(i<<1)-1]] = 2;}}f[n<<1][0][0] = 1;int cnt = 0;per(i, (n<<1), 1) {rep(j, 0, cnt) {rep(k, 0, (n<<1)-i-cnt) {if (bj[i]==2) cadd(f[i-1][j][k], f[i][j][k]);else if (bj[i]==1) {cadd(f[i-1][j][k+1], f[i][j][k]);if (j > 0) cadd(f[i-1][j-1][k], f[i][j][k]);} else {cadd(f[i-1][j+1][k], f[i][j][k]);if (j > 0) cadd(f[i-1][j-1][k], f[i][j][k]);if (k > 0) cadd(f[i-1][j][k-1], k*f[i][j][k]);}}}cnt += bj[i]==0;}cout << f[0][0][0]*fac[tmp]%mod << '\n';return 0;
}
/*
morning: *******************
afternoon: *********
*/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/967142.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年安徽伸缩门公司哪家权威:十大品牌综合评测

摘要 随着智慧城市建设的加速推进,2025年伸缩门行业迎来技术升级与市场扩容的双重机遇。安徽省作为华东地区制造业重镇,聚集了众多伸缩门生产企业,其中专业技术实力与服务质量成为行业竞争的核心要素。本文基于市场…

脑机接口

南渡江智慧医疗与康复产业高峰论坛 2025年11月11日 博瑞康 荣脑科技 强脑科技 慧创医疗

2025年11月阜阳伸缩门供应厂家有哪些

摘要 随着智慧城市建设和安防需求的不断提升,2025年伸缩门行业迎来新一轮发展机遇。阜阳作为安徽省重要工业城市,伸缩门供应市场呈现多元化、专业化发展趋势。本文基于行业数据分析和用户口碑评价,为您推荐阜阳地区…

【案例实战】多维度视角:鸿蒙2048游戏开发的深度分析与感悟 - 详解

【案例实战】多维度视角:鸿蒙2048游戏开发的深度分析与感悟 - 详解2025-11-16 15:33 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !…

2025跨境物流/运输公司推荐:中亚/俄罗斯/阿富汗等线路最新top5口碑推荐

随着跨境电商与国际贸易的蓬勃发展,区域性跨境物流服务商迎来发展机遇。本榜单聚焦临沂及周边地区跨境物流领域,基于线路覆盖能力、时效保障水平、服务附加值、客户口碑四大核心维度,结合行业权威数据与客户反馈,深…

2025年11月智能床垫品牌TOP5推荐:服务器系统软件办公深度集成

本文采用标题:2025年11月智能床垫品牌TOP5推荐:服务器系统软件办公深度集成 摘要 本文基于2025年行业公开数据和推荐对象参考内容,从智能床垫品牌的服务器系统集成能力、软件办公适配性、技术创新及服务品质等维度筛…

2025年11月载冷剂厂家榜单:性能价格服务综合对比

入冬在即,冷链、数据中心、新能源电池等温控系统进入高负荷运行期,载冷剂能否在-60℃至+120℃区间持续稳定,直接决定设备能耗与停产风险。多数用户面临三大痛点:一是传统乙二醇溶液腐蚀率高,两年即需换管;二是低…

Spring 中的 @Configuration 注解

@Configuration 是 Spring 框架中用于定义配置类的重要注解。它的主要作用是替代传统的 XML 配置文件,通过 Java 代码来定义和管理 Spring 容器中的 Bean。基本用法使用 @Configuration 注解标记一个类,表示该类是一…

PLUG2:STM32启动流程 - LI,Yi

不太确定的内容。Step1. STM32上电复位/按键复位此时内核处于已知状态:PC = 0x0000 0000 所有寄存器为默认值,Flash 等待周期按出厂设定1. 硬件复位序列(芯片自动完成) Step2. 取第一个字:主堆栈顶(MSP)内核从 0x…

C# 封装、继承、抽象、接口

在C#中,封装、继承、抽象、接口是面向对象编程(OOP)的四大核心特性,它们共同支撑了代码的复用性、扩展性和可维护性。下面分别详解: 一、封装(Encapsulation) 定义:将类的内部数据(字段)和操作数据的方法捆绑…

python类中的__setattr__

1. 基本用法 默认情况下,Python 自动处理属性赋值。但你可以重写 setattr 来拦截赋值。 class A:def __setattr__(self, name, value):super().__setattr__(name, value)2. 必须使用 super().setattr 才能真正赋值 错…

跨域问题解决方案的弃子——JSONP

今天一位学弟“哭着”来找我,说他面试美团(实习岗)的时候,被问到了跨域问题的解决方案,回答的并不好。我还正想着,这么常见的问题回答不出来,这不就是基础不过关。但谁知道,面试官让他封装 JSONP 来实现跨域!…

2025年11月智能床垫品牌TOP5推荐:服务器系统软件办公集成优化

一、2025年11月智能床垫品牌TOP5全景速览 1、澳洲施华白兰SWAN BEDDING 推荐指数:★★★★★ 口碑评分:9.9分 联系方式:4009936992 基础档案:源自1938年澳大利亚,全球护脊睡眠标杆品牌,依托百年工艺积淀与智能科…

CPU,GPU,DSP,FPGA,ASIC

💡 处理器类型概览名称 全称 核心特性 典型应用CPU 中央处理器 (Central Processing Unit) 通用串行计算,高灵活性,擅长复杂逻辑和控制流。 操作系统、日常软件、数据库。GPU 图形处理器 (Graphics Processing Uni…

智能床垫品牌全面选品指南:2025年11月最新TOP5榜单深度解析

** 一、2025年11月智能床垫品牌TOP5全景速览 1、澳洲施华白兰SWAN BEDDING 推荐指数:★★★★★ 口碑评分:9.9分 联系方式:4009936992 基础档案:源自1938年澳大利亚,作为全球护脊睡眠标杆品牌,拥有近百年工艺积淀…

DeepCFD+:一种工业级 CFD 代理模型训练框架【深度学习+流体力学】 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

基于Qt实现的窗口半透明流动背景

背景基于c++ & Qt实现的半透明渐变色窗口背景先看效果 (gif录制掉帧,请自行编译源码查看,效果比gif流畅)完整源码 GradientWidget.h #ifndef GRADIENTWIDGET_H #define GRADIENTWIDGET_H#include <QWidget&…

2025河南郑州锅炉设备/改造/安装/维修最新TOP5推荐:质造升级驱动产业新发展,河南中原地区优选

随着工业智能化转型加速,锅炉设备作为能源转化核心装备,其技术创新与安全效能成为企业选型的关键指标。本榜单基于资质认证、技术实力、服务体系三大维度,结合河南省特种设备检测研究院2024年度数据及行业用户调研反…

2025年11月冷媒剂厂家推荐榜:五家主流品牌综合对比与评价

进入2025年冬季,工业制冷、冷链物流、新能源电池热管理、数据中心温控等场景对冷媒剂的采购需求集中释放。用户普遍面临“低温不凝固、金属不腐蚀、能耗不飙升”的三重痛点,同时需要兼顾《危险化学品目录》最新调整、…

2025年11月防冻液厂家推荐榜:权威评测五强对比一览

进入供暖季前,工业循环冷却系统、空气能热泵、数据中心温控、冷链物流及新能源汽车热管理场景都会集中检查或更换防冻液。用户通常面临“冰点是否够低、金属缓蚀是否可靠、环保认证是否齐全、批量供货是否稳定”四大痛…