20260120 省选模拟赛

news/2026/1/20 21:41:17/文章来源:https://www.cnblogs.com/XP3301Pipi/p/19508874

20260120 省选模拟赛

https://htoj.com.cn/cpp/oj/contest/detail?cid=22635323962240

Problem B. 白点黑点

对于度数序列,求出它能构造出的最大匹配有哪些。

最大匹配考虑 Hall 定理。对于一个集合 \(S\),其 \(|N(S)|\) 最小取 \(1\),最大取 \(\min(\sum_{x\in S} d_x,n)\)。从 \(1\) 开始,可以通过调整一条边使得 \(|N(S)|\) 增加 \(1\)这启发我们,最大匹配的取值可能是连续的。

结论:若构造出来的最小、最大的最大匹配分别为 \(l,r\),那么 \([l,r]\) 内的所有最大匹配都能构造出来。

\(l=r\) 显然成立。

\(l<r\),那么把最大匹配为 \(l\) 的连边方案拿出来,一定存在一个左部未匹配点 \(x\) 连向右部匹配点 \(u\),一个右部未匹配点 \(y\) 连向左部匹配点 \(v\),否则不可能有比 \(l\) 更大的最大匹配。断掉 \((x,u),(y,v)\),连接 \((u,v),(x,y)\),最大匹配增加 \(1\),而度数不变。

不难构造得出,设左部、右部度数非 \(0\) 点个数分别为 \(i,j\)那么 \(r=\min(i,j)\)

但是 \(l\) 不好求。放宽限制,我们钦定一个集合 \(S\),那么最大匹配一定 \(\le n-(|S|-|N(S)|)\)一定存在一个 \(S\) 让最大匹配达到 \(l\) 的下界

把钦定 \(S\)、确定度数的过程放到 dp 中解决。设 \(f(i,j,s,x,y)\) 为考虑前 \(i\) 个左部点,有 \(j\) 个度数非 \(0\) 点,\(|S|=s\)\(S\) 度数和为 \(x\),总度数和为 \(y\) 的最小代价,总复杂度 \(O(n^6)\)。右部点一样做,然后合并即可。

Note:Hall 定理使用不熟练。

int n,m;
int a[N][N],b[N][N];
ll f[N][N][N][N][N],g[N][N][N][N][N];
ll ans[N];signed main(){read(n),read(m);for(int i=1;i<=n;i++){for(int j=0;j<=m;j++)read(a[i][j]);}for(int i=1;i<=n;i++){for(int j=0;j<=m;j++)read(b[i][j]);}memset(ans,0x3f,sizeof(ans));memset(f,0x3f,sizeof(f));memset(g,0x3f,sizeof(g));f[0][0][0][0][0]=g[0][0][0][0][0]=0;for(int i=1;i<=n;i++)for(int j=0;j<=i-1;j++)for(int s=0;s<=i-1;s++)for(int x=0;x<=m;x++)for(int y=x;y<=m;y++)for(int d=0;y+d<=m;d++){Ckmin(f[i][j+(d>0)][s+1][x+d][y+d],f[i-1][j][s][x][y]+a[i][d]);Ckmin(f[i][j+(d>0)][s][x][y+d],f[i-1][j][s][x][y]+a[i][d]);Ckmin(g[i][j+(d>0)][s+1][x+d][y+d],g[i-1][j][s][x][y]+b[i][d]);Ckmin(g[i][j+(d>0)][s][x][y+d],g[i-1][j][s][x][y]+b[i][d]);} for(int i=0;i<=n;i++){for(int j=0;j<=n;j++){int R=min(i,j); for(int s=0;s<=n;s++){ll mn=LINF;for(int t=0;t<=s;t++){int L=n-s+t;if(L>R) continue;for(int x=0;x<=m;x++){for(int y=x;y<=m;y++)Ckmin(mn,f[n][i][s][x][m]+g[n][j][t][y][m]);}Ckmin(ans[L],mn);}}}}for(int i=0;i<=n;i++){if(ans[i]<1e18) printf("%lld ",ans[i]);else printf("no ");}puts("");
}

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

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

相关文章

国内网络环境下 MiniConda + Jupyter + ChromaDB 安装教程

国内网络环境下 MiniConda + Jupyter + ChromaDB 安装教程国内网络环境下 MiniConda + Jupyter + ChromaDB 安装教程 针对国内网络环境,使用国内镜像源加速下载。 第一部分:安装 MiniConda(使用国内下载源) 步骤 1…

大数据领域列式存储:加速数据查询的利器

大数据领域列式存储&#xff1a;加速数据查询的利器 关键词&#xff1a;列式存储、行式存储、数据压缩、大数据查询、存储架构、Parquet、数据仓库 摘要&#xff1a;在大数据时代&#xff0c;"数据查询慢"是许多企业的痛点——当你需要从TB级数据中提取某几列的统计结…

JavaScript对象深浅拷贝及解析

JavaScript对象深浅拷贝及解析下面这段代码使用了 JavaScript 中的对象展开运算符(...),核心作用是创建一个 obj1 的浅拷贝对象 obj2。1. 基础用法示例先看一个完整的可运行示例,帮你理解效果:// 原始对象 const …

sfda

hello world

大数据毕设项目:基于django的电子产品电商平台主数据管理系统(源码+文档,讲解、调试运行,定制等)

java毕业设计-基于springboot的(源码LW部署文档全bao远程调试代码讲解等) 博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、…

[豪の算法奇妙冒险] 代码随想录算法训练营第三十四天 | 62-不同路径、63-不同路径Ⅱ

LeetCode62 不同路径、LeetCode63 不同路径Ⅱ代码随想录算法训练营第三十四天 | 62-不同路径、63-不同路径ⅡLeetCode62 不同路径题目链接:https://leetcode.cn/problems/unique-paths/ 文章讲解:https://programmer…

第 471 场周赛Q1——3712. 出现次数能被 K 整除的元素总和

题目链接&#xff1a;3712. 出现次数能被 K 整除的元素总和&#xff08;简单&#xff09; 算法原理&#xff1a; 解法&#xff1a;哈希表 3ms击败54.15% 时间复杂度O(N) 思路很简单&#xff0c;先利用哈希表把数组中出现的元素对应的次数统计出来&#xff0c;然后遍历判断其次数…

C++课后习题训练记录Day71

1.练习项目&#xff1a; 题目描述 小蓝正在学习一门神奇的语言&#xff0c;这门语言中的单词都是由小写英文字母组 成&#xff0c;有些单词很长&#xff0c;远远超过正常英文单词的长度。小蓝学了很长时间也记不住一些单词&#xff0c;他准备不再完全记忆这些单词&#xff0c…

【Android 美颜相机】第十天:YUV420SP和RGB

YUV420SP转RGB及位图 本文将详细解析yuv-decoder.c文件中的JNI代码&#xff0c;该代码运行在Android平台&#xff0c;通过C语言实现YUV420SP格式图像数据到RGBA/ARBG格式的转换&#xff0c;以及位图像素调整功能&#xff0c;借助JNI完成Java与C层的交互&#xff0c;兼顾图像处理…

fpga 低频模块和高频模块之间单脉冲信号传输 verilog

User: fpga 低频模块和高频模块之间单脉冲信号传输 verilog Kimi: 在 FPGA 里,低频时钟域(<几十 MHz)和高频时钟域(>100 MHz)之间如果只用一根线传“单脉冲”,最核心的问题是: 高频域对这根线的采样窗口非…

CAD一键批量标注线长度——CAD c#二次开发

效果如下&#xff1a;支持直线、多段线、圆、圆弧、椭圆、椭圆弧、样条曲线、云线等曲线。

【Android 美颜相机】第十一天:GPUImageFilter解析

GPUImageFilter解析 GPUImageFilter 是 Android 平台基于 OpenGL ES 2.0 实现的 GPU 图像滤镜核心基类&#xff0c;为各类图像滤镜&#xff08;如美颜、风格化特效&#xff09;提供了统一的初始化、绘制、资源管理、参数配置能力。 本文将逐行解析该类的代码结构、实现逻辑及每…

microblaze是怎么通过把数据通过axi总线给到ip的

User: microblaze是怎么通过把数据通过axi总线给到ip的 Kimi: MicroBlaze 把数据“送”给 IP 并不是靠一根信号线,而是靠“AXI 总线协议”在地址空间上完成一次标准读写。只要 IP 核在 Vivado 里被挂到同一根 AXI 总线…

强烈安利8个AI论文软件,本科生搞定毕业论文!

强烈安利8个AI论文软件&#xff0c;本科生搞定毕业论文&#xff01; AI 工具让论文写作不再难 在当前的学术环境中&#xff0c;越来越多的本科生开始借助 AI 工具来辅助完成毕业论文。这些工具不仅能够帮助学生高效地完成内容创作&#xff0c;还能在降低 AIGC 率、保持语义通顺…

强烈安利8个AI论文软件,本科生搞定毕业论文!

强烈安利8个AI论文软件&#xff0c;本科生搞定毕业论文&#xff01; AI 工具让论文写作不再难 在当前的学术环境中&#xff0c;越来越多的本科生开始借助 AI 工具来辅助完成毕业论文。这些工具不仅能够帮助学生高效地完成内容创作&#xff0c;还能在降低 AIGC 率、保持语义通顺…

solaris vlan网卡设置

首先,查看当前机器的网卡信息: if config -a ls /etc/hostname* 确认当前机器有几块网卡?网卡名? 哪些网卡已经设置了 vlan子网卡。方式一,通过配置文件设置 假如在 e1000g3 网卡上,添加 vlan.107 子网卡,…

第 470 场周赛Q2——3702. 按位异或非零的最长子序列

题目链接&#xff1a;3702. 按位异或非零的最长子序列&#xff08;中等&#xff09; 算法原理&#xff1a; 解法&#xff1a;枚举 2ms击败95.80% 时间复杂度O(N) 先把数组中所有数全部异或在一起&#xff0c;如果异或结果不为零&#xff0c;就直接返回数组长度&#xff0c;如果…

文字标注旋转角度设置(防止文字倒立)

对CAD中曲线进行文字标记时&#xff0c;当文字角度必须随曲线角度时&#xff0c;为避免字头朝下&#xff0c;可采用如下方式ang ang % Math.PI;while (ang < 0) { ang Math.PI; }// 确保文字不会倒立&#xff08;阅读方向从左到右&#xff09;while (ang > Math.PI / 2…

换根 DP 简介

​【换根 DP 简介】● 换根 DP 是树形 DP 的一种重要技术,用于解决需要以树中‌不同节点为根‌分别计算答案的问题。其核心思想是在一次动态规划后,通过‌推导出换根时的状态转移公式‌,高效地计算出所有节点作为根…

文字标注旋转角度设置(防止文字倒立)

对CAD中曲线进行文字标记时&#xff0c;当文字角度必须随曲线角度时&#xff0c;为避免字头朝下&#xff0c;可采用如下方式ang ang % Math.PI;while (ang < 0) { ang Math.PI; }// 确保文字不会倒立&#xff08;阅读方向从左到右&#xff09;while (ang > Math.PI / 2…