当前位置: 首页 > article >正文

UVa 1327 King‘s Quest

题目描述国王有NNN个儿子还有NNN个美丽的女孩。每个王子都有自己喜欢的女孩列表可能喜欢多个女孩。巫师已经给出了一个初始的完美匹配方案即每个王子都匹配到了一个他喜欢的女孩且每个女孩只匹配一个王子。现在国王要求对于每个王子找出所有他可以娶的女孩使得在娶了这个女孩之后剩下的王子仍然能够全部匹配到喜欢的女孩即仍然存在完美匹配。输入格式第一行NNN1≤N≤20001 \leq N \leq 20001≤N≤2000表示王子的数量接下来NNN行每行先是一个整数KiK_iKi​表示该王子喜欢的女孩数量接着是KiK_iKi​个不同的整数111到NNN表示喜欢的女孩编号最后一行NNN个不同的整数表示巫师给出的初始匹配方案第iii个数表示王子iii初始匹配的女孩输出格式对于每个王子输出一行首先是一个整数LiL_iLi​表示该王子可以选择的女孩数量接着是LiL_iLi​个整数表示这些女孩的编号顺序任意题目分析问题本质这是一个二分图匹配的扩展问题。我们需要在保持全局完美匹配存在的前提下找出每个王子可以选择的所有女孩。关键观察初始匹配巫师给出的匹配是一个合法的完美匹配可交换性如果一个王子可以换到另一个女孩同时保持全局匹配存在那么这两个匹配关系必须在某种意义上是可交换的图论建模可以将问题转化为有向图中的强连通分量SCC\texttt{SCC}SCC问题算法思路1. 构建有向图我们将王子和女孩都看作图中的节点节点000到N−1N-1N−1表示王子节点NNN到2N−12N-12N−1表示女孩女孩ggg对应节点Ng−1N g - 1Ng−1构建有向边的规则对于王子iii喜欢的每个女孩ggg如果ggg不是他的初始匹配女孩则添加边i→(Ng−1)i \rightarrow (N g - 1)i→(Ng−1)对于每个女孩ggg在初始匹配中匹配给王子iii添加边(Ng−1)→i(N g - 1) \rightarrow i(Ng−1)→i2. 强连通分量SCC\texttt{SCC}SCC的意义在这个有向图中如果王子iii和女孩jjj在同一个强连通分量中那么王子iii可以选择女孩jjj同时通过分量内的边重新调整匹配使得所有王子仍然有匹配3. 求解步骤读入数据并构建有向图使用Tarjan\texttt{Tarjan}Tarjan算法求强连通分量对于每个王子iii初始匹配的女孩一定可以选其他喜欢的女孩ggg可以选当且仅当王子iii和女孩ggg在同一个SCC\texttt{SCC}SCC中算法正确性证明初始匹配的女孩总是可选的不改变匹配如果王子iii和女孩jjj在同一个SCC\texttt{SCC}SCC中那么存在从iii到jjj和从jjj到iii的路径这意味着可以通过SCC\texttt{SCC}SCC内的环来重新分配匹配使得王子iii匹配女孩jjj同时其他王子仍然有匹配复杂度分析节点数2N2N2N最多400040004000边数∑Ki≤200000\sum K_i \leq 200000∑Ki​≤200000Tarjan 算法复杂度O(NE)O(N E)O(NE)完全可行代码实现// Kings Quest// UVa ID: 1327// Verdict: Accepted// Submission Date: 2025-10-16// UVa Run Time: 0.330s//// 版权所有C2025邱秋。metaphysis # yeah dot net#includeiostream#includevector#includealgorithmusingnamespacestd;constintMAXN4005;// 最多 2N 个节点vectorintG[MAXN];// 邻接表intidx[MAXN],low[MAXN],scc_id[MAXN],scc_cnt,ts;// Tarjan 算法相关数组intstk[MAXN],top;// 栈boolin_stk[MAXN];// 标记节点是否在栈中// Tarjan 算法求强连通分量voidtarjan(intu){idx[u]low[u]ts;stk[top]u;in_stk[u]true;for(intv:G[u]){if(!idx[v]){tarjan(v);low[u]min(low[u],low[v]);}elseif(in_stk[v]){low[u]min(low[u],idx[v]);}}if(low[u]idx[u]){intx;do{xstk[--top];in_stk[x]false;scc_id[x]scc_cnt;}while(x!u);scc_cnt;}}intmain(){ios::sync_with_stdio(false);cin.tie(nullptr);intN;while(cinN){// 初始化图和相关数组for(inti0;i2*N;i){G[i].clear();idx[i]low[i]scc_id[i]0;in_stk[i]false;}scc_cnttstop0;// 读入每个王子的喜好vectorvectorintlike(N);for(inti0;iN;i){intk;cink;like[i].resize(k);for(intj0;jk;j){cinlike[i][j];}}// 读入初始匹配vectorintmatch(N);for(inti0;iN;i){cinmatch[i];}// 构建有向图for(inti0;iN;i){for(intg:like[i]){if(gmatch[i])continue;// 初始匹配不建边// 王子 i - 女孩 gG[i].push_back(Ng-1);}}for(inti0;iN;i){// 女孩 match[i] - 王子 i初始匹配的反向边G[Nmatch[i]-1].push_back(i);}// 求强连通分量for(inti0;i2*N;i){if(!idx[i])tarjan(i);}// 输出答案for(inti0;iN;i){vectorintans;for(intg:like[i]){// 可以选的女孩初始匹配的女孩 或 在同一个 SCC 中的女孩if(gmatch[i]||scc_id[i]scc_id[Ng-1]){ans.push_back(g);}}sort(ans.begin(),ans.end());coutans.size();for(intg:ans){cout g;}cout\n;}}return0;}总结本题通过将二分图匹配问题转化为有向图的强连通分量问题巧妙地解决了在保持全局匹配存在的前提下找出所有可选匹配的问题。这种SCC\texttt{SCC}SCC的建模方法在图论和匹配问题中有着广泛的应用是解决此类问题的经典技巧。关键点在于理解初始匹配提供了图的骨架额外的喜欢关系构成了潜在的可交换路径强连通分量内的节点可以自由交换而不破坏匹配的完整性这种方法的时间复杂度为O(NE)O(N E)O(NE)能够高效处理题目给出的数据规模。

相关文章:

UVa 1327 King‘s Quest

题目描述 国王有 NNN 个儿子,还有 NNN 个美丽的女孩。每个王子都有自己喜欢的女孩列表(可能喜欢多个女孩)。巫师已经给出了一个初始的完美匹配方案,即每个王子都匹配到了一个他喜欢的女孩,且每个女孩只匹配一个王子。 …...

UVa 10410 Tree Reconstruction

题目分析 问题描述 本题要求根据给定的 BFS\texttt{BFS}BFS(广度优先搜索)和 DFS\texttt{DFS}DFS(深度优先搜索)遍历序列,重建一棵树的结构。这棵树有 nnn 个节点,编号从 111 到 nnn,并且题目特…...

Arm Cortex-A76处理器错误分析与规避方案

1. Cortex-A76处理器错误概述在嵌入式系统开发中,处理器错误(Erratum)是硬件设计中已知但未修复的问题,可能导致系统异常或性能下降。Arm Cortex-A76作为一款高性能处理器,广泛应用于移动设备和嵌入式领域。其L1指令缓…...

Cursor Pro破解工具终极指南:从设备限制到永久免费使用的完整解决方案

Cursor Pro破解工具终极指南:从设备限制到永久免费使用的完整解决方案 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve r…...

FastBee源码深度剖析:Spring Boot + Vue全栈架构设计

FastBee源码深度剖析:Spring Boot Vue全栈架构设计 【免费下载链接】FastBee FastBee开源物联网平台,简单易用,可用于搭建物联网平台以及二次开发和学习。适用于智能家居、智慧办公、智慧社区、农业监测、水利监测、工业控制等。 项目地址…...

多模态LLM与强化学习融合的ReLook框架解析

1. 项目背景与核心价值在计算机视觉与强化学习的交叉领域,传统方法通常面临环境理解能力有限、策略泛化性不足的痛点。ReLook框架的创新之处在于将多模态大语言模型(LLM)作为环境理解的"大脑",通过视觉-语言联合表征增强…...

163MusicLyrics终极指南:3分钟搞定全网歌词下载与管理的完整教程

163MusicLyrics终极指南:3分钟搞定全网歌词下载与管理的完整教程 【免费下载链接】163MusicLyrics 云音乐歌词获取处理工具【网易云、QQ音乐】 项目地址: https://gitcode.com/GitHub_Trending/16/163MusicLyrics 你是否曾为找不到心爱歌曲的歌词而烦恼&…...

如何为Project Sandcastle重建Android应用:16kB页大小兼容性完全指南

如何为Project Sandcastle重建Android应用:16kB页大小兼容性完全指南 【免费下载链接】projectsandcastle Supporting tools for Android/Linux on the iPhone 项目地址: https://gitcode.com/gh_mirrors/pr/projectsandcastle Project Sandcastle是一个专注…...

Spring Boot 3 JWT Security部署指南:使用Docker快速部署安全微服务

Spring Boot 3 JWT Security部署指南:使用Docker快速部署安全微服务 【免费下载链接】spring-boot-3-jwt-security Sample project on how to implement JWT security based using Spring boot 3 and Spring security 6 项目地址: https://gitcode.com/gh_mirrors…...

STAR-RIS技术与6G集成感知通信架构解析

1. STAR-RIS技术原理与6G集成感知通信架构STAR-RIS(Simultaneously Transmitting and Reflecting Reconfigurable Intelligent Surface)是一种革命性的可编程电磁表面技术,其核心在于通过动态调控超材料单元的电磁特性,实现对入射…...

The Silver Searcher多线程搜索优化:充分利用CPU性能的终极指南

The Silver Searcher多线程搜索优化:充分利用CPU性能的终极指南 【免费下载链接】the_silver_searcher A code-searching tool similar to ack, but faster. 项目地址: https://gitcode.com/gh_mirrors/th/the_silver_searcher The Silver Searcher&#xff…...

深度学习完全指南:从神经元到卷积网络,一文读懂AI的大脑

一、深度学习不是什么玄学——先搞清它的“户口本” 很多人一听到“深度学习”四个字,脑海里就浮现出《终结者》里的天网或者《黑客帝国》的矩阵。其实,它远没有那么神秘。 1.1 深度学习是机器学习的亲儿子 要理解深度学习,先要知道它从哪儿来。机器学习是人工智能的一个…...

React-Motion Spring函数终极指南:如何精准控制弹簧参数和预设

React-Motion Spring函数终极指南:如何精准控制弹簧参数和预设 【免费下载链接】react-motion A spring that solves your animation problems. 项目地址: https://gitcode.com/gh_mirrors/re/react-motion React-Motion是一个强大的动画库,它通过…...

GLM-4.7-Flash实战教程:基于该模型构建私有化知识库RAG应用全流程

GLM-4.7-Flash实战教程:基于该模型构建私有化知识库RAG应用全流程 1. 引言:为什么你需要一个私有知识库? 想象一下这个场景:你是一家公司的技术负责人,团队每天都会产生大量的技术文档、会议纪要、产品需求。每当新同…...

不止于聊天室:用C# WebSocket和WSS协议打造一个简易的股票行情推送Demo

用C# WebSocket和WSS协议构建实时股票行情推送系统 金融市场的瞬息万变要求行情数据能以毫秒级延迟推送到终端用户。传统的HTTP轮询方式在这种高频场景下显得力不从心,而WebSocket协议凭借其全双工通信特性成为实时金融数据推送的理想选择。本文将带你从零开始&…...

文件上传漏洞挖掘与防御全解析

文件上传漏洞挖掘方法理解文件上传漏洞原理 文件上传漏洞通常出现在Web应用程序允许用户上传文件但未对文件类型、内容或扩展名进行严格验证时。攻击者可上传恶意文件(如Webshell)到服务器,进而执行任意代码或控制服务器。常见的文件上传漏洞…...

SeqGPT-560M实战教程:增量学习新字段——仅用10条样本微调适配垂直领域

SeqGPT-560M实战教程:增量学习新字段——仅用10条样本微调适配垂直领域 SeqGPT-560M是一个基于先进架构的企业级智能信息抽取系统,专门针对非结构化文本处理而设计。该系统在双路NVIDIA RTX 4090高性能计算环境下,能够实现毫秒级的命名实体识…...

nli-MiniLM2-L6-H768效果惊艳:对抗样本测试——同义词替换下entailment分数波动<8%

nli-MiniLM2-L6-H768效果惊艳&#xff1a;对抗样本测试——同义词替换下entailment分数波动<8% 1. 模型核心能力解析 nli-MiniLM2-L6-H768 是一个轻量级自然语言推理&#xff08;NLI&#xff09;模型&#xff0c;专注于文本对关系判断而非内容生成。这个模型的核心价值在于…...

Code Interpreter SDK 终极指南:为AI应用注入代码执行能力

Code Interpreter SDK 终极指南&#xff1a;为AI应用注入代码执行能力 【免费下载链接】code-interpreter Python & JS/TS SDK for running AI-generated code/code interpreting in your AI app 项目地址: https://gitcode.com/gh_mirrors/co/code-interpreter Co…...

别再只盯着网络结构图了!YOLOv7的‘模型缩放’与‘标签分配’才是工程落地的关键

YOLOv7工程实践&#xff1a;模型缩放与标签分配如何重塑目标检测落地效果 当算法工程师第一次打开YOLOv7论文时&#xff0c;目光往往会被那些复杂的网络结构图吸引——从E-ELAN模块到重参数化卷积&#xff0c;再到特征金字塔的巧妙设计。但真正将模型部署到安防摄像头或车载计算…...

从TensorFlow 1.x的‘Session.run’到2.x的‘Eager Execution’:一个老项目迁移的踩坑实录

从TensorFlow 1.x到2.x的迁移实战&#xff1a;Eager Execution带来的范式革命 当我在2020年第一次尝试将一个生产环境的推荐系统从TensorFlow 1.15升级到2.3时&#xff0c;原本以为只需要简单修改几个API调用。但实际打开代码仓库后&#xff0c;面对满屏的tf.Session()和feed_d…...

如何用Crane在30分钟内开始你的云成本优化之旅

如何用Crane在30分钟内开始你的云成本优化之旅 【免费下载链接】crane Crane is a FinOps Platform for Cloud Resource Analytics and Economics in Kubernetes clusters. The goal is not only to help users to manage cloud cost easier but also ensure the quality of ap…...

告别训练慢、精度低:手把手教你用NanoDet-Plus的AGM模块加速模型收敛

NanoDet-Plus实战&#xff1a;用AGM模块突破轻量检测模型的训练瓶颈 在目标检测领域&#xff0c;轻量级模型始终面临着精度与速度的艰难平衡。当我们把模型体积压缩到极致时&#xff0c;常常会遇到训练收敛缓慢、指标波动大的困扰。NanoDet-Plus引入的Assign Guidance Module(A…...

Gemma-4-26B-A4B-it-GGUF保姆级教程:Supervisor服务管理命令速查与故障修复

Gemma-4-26B-A4B-it-GGUF保姆级教程&#xff1a;Supervisor服务管理命令速查与故障修复 1. 项目概述 Gemma-4-26B-A4B-it-GGUF 是 Google Gemma 4 系列中高性能、高效能的 MoE&#xff08;混合专家&#xff09;聊天模型&#xff0c;具有以下核心特性&#xff1a; 架构&#…...

ReactPress:用现代前端工具链开发WordPress主题的实践指南

1. 项目概述&#xff1a;当WordPress遇见React如果你和我一样&#xff0c;常年混迹在Web开发的前后端&#xff0c;那你一定对WordPress和React这两个名字不陌生。WordPress&#xff0c;这个占据了全球超过四成网站市场的“老大哥”&#xff0c;以其强大的内容管理能力和海量的主…...

CogVideoX-2b技术拆解:Web界面如何调用本地模型服务

CogVideoX-2b技术拆解&#xff1a;Web界面如何调用本地模型服务 1. 引言&#xff1a;从文字到视频的本地化创作 想象一下&#xff0c;你有一个创意想法&#xff0c;想要把它变成一段短视频。传统方式需要学习复杂的视频编辑软件&#xff0c;或者花费高价聘请专业团队。但现在…...

coze-loop精彩效果:同一段代码在‘提效’‘可读’‘修Bug’三模式下的差异化输出

coze-loop精彩效果&#xff1a;同一段代码在‘提效’‘可读’‘修Bug’三模式下的差异化输出 你是不是也遇到过这种情况&#xff1f;写了一段代码&#xff0c;跑起来没问题&#xff0c;但总觉得哪里不对劲。可能是效率有点低&#xff0c;也可能是几个月后自己都看不懂了&#…...

学术期刊名称智能缩写:原理、实现与自动化工具应用

1. 项目概述&#xff1a;一个学术人的“省字”利器 如果你和我一样&#xff0c;常年混迹在学术圈&#xff0c;或者需要频繁撰写包含大量参考文献的论文、报告&#xff0c;那你一定对参考文献列表的格式要求深恶痛绝。尤其是期刊名称的缩写&#xff0c;不同出版社、不同学科领域…...

基于华为MetaERP的技术架构特性,我将从4A架构(业务架构、应用架构、数据架构、技术架构)四个维度,为您系统对比Inside模式与Outside模式的差异

基于华为MetaERP的技术架构特性&#xff0c;我将从4A架构&#xff08;业务架构、应用架构、数据架构、技术架构&#xff09;四个维度&#xff0c;为您系统对比Inside模式与Outside模式的差异&#xff0c;并给出应用开发的决策建议。一、核心概念界定在华为MetaERP体系下&#x…...

字符串匹配:暴力法和KMP算法(C语言)

文章目录KMP算法1.串的定义1.1定长顺序存储和变长分配存储表示1.2 串的初始化2.串的匹配2.1 暴力查找2.2 KMP算法KMP算法的思想手动算next数组next数组值的规律代码全部代码KMP算法 1.串的定义 串&#xff08;字符串&#xff09;是一种特殊的线性表&#xff0c;其数据元素是字…...