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

题解:CF2172N New Kingdom

题目大意

给定三个整数 \(n,k,b\)。构造一张有 \(m(0\le m\le 5n)\) 条边的连通简单无向图,满足有 \(k\) 个点的度数为奇数,有 \(b\) 条边是割边 。

解法

这道题思考起来并不困难,但是存在一定数量的 corner case,一般可以通过跑出较小范围的所有数据来进行调试。

首先,因为总度数为 \(2m\) 是偶数,所有奇数点个数一定是偶数,当 \(k\) 是奇数时无解。

\(b\) 条边是割边,相当于要求缩点后形成一棵有 \(b+1\) 个节点的树。

同时,当 \(b=n-2\) 时,必然存在一个点双包含两个节点,但这样的点双一定存在重边,所以无解。

Part 1(\(c=0\)

缩点后得到的树,其叶子节点的度数必为奇数,其在原图中对应的一个边双至少存在一个点度数为奇数。

所以,当 \(c=0\) 时,只能存在一个边双,也就是 \(b=0\),当 \(b>0\) 时无解。然后:

  • \(n=1\) 时,只有一个点,不需要连边。
  • \(n=2\) 时,必须连成一个边双,如上面所说,必须有边 \((1,2)\)\((2,1)\),此时出现重边,所以无解。
  • \(n\ge 3\) 时,只需要用 \(n-1\) 条边将所有点连成一个环即可。

Part 2(\(b=0\)

此时只有一个点双,可以用 \(n-1\) 条边将所有点连成一个环来构造点双。

接下来,我们考虑构造出 \(k\) 个度数为奇数的点。有如下构造方式:

  • 选择环上 \(\frac{k}{2}\) 对互不同相同的点对,对每个点对内连边,可以产生 \(k\) 个度数为奇数的点。

注意,当 \(n=3,k=2\) 时,我们需要在环上连一个点对,但此时无论选择哪两个点都会产生重边,所以无解。

Part 3(\(b+1>k\)

此时是点双个数比度数为奇数的点的个数多的情况。

我们可以采取这样的构造方式:

如上图(\(n=12,k=6,b=8\) 时的构造):

  • 红色部分,我们通过构造一个菊花来满足有 \(k\) 个奇数点的限制。
  • 橙色部分,我们通过构造一条链来满足多余的点双的限制。
  • 黄色部分,仅通过前面两个部分我们可能无法将 \(n\) 个点全部用完,所以我们可以通过构造一个环来将剩下的点用完。

Part 4(\(b+1=k\)

此时,相较于 \(b+1>k\) 的构造方式,我们只需要去除橙色部分即可。也就是说,我们的构造方式是一个环形成的边双上连接一个菊花。

Part 5(\(b+1<k\)

此时,我们能够使用的点双的数量要少于奇数点的个数,也就是说,我们需要使用 Part 2 的做法在点双内构造出若干度数为奇数的点。

我们希望每个点双的环尽可能大,这样才能构造出尽可能多的度数为奇数的点。贪心的考虑,我们使用 Part 4 中的做法,即构造一个点双,上面连 \(b\) 个点的菊花。

如图(\(n=12,k=8,b=4\) 时的构造)。

我们只需要在大环中连 \(\frac{k-b}{2}\) 对点,就可以构造出所有 \(k\) 个度数为奇数的点。

注意一个特殊情况:大环中包含 \(3\) 个节点。此时我们的构造方式并不适用,因为三个节点的环会连出重边。

首先,当 \(n=4,b=1\) 时无解。其它情况:

  • 构造一个包含节点 \(1,2,3\) 的环。
  • \(2,3\) 上分别连接一个节点,在 \(1\) 上连接剩下 \(n-5\) 个节点即可。

以上,我们的构造方案边数不超过 \(\frac{3}{2}n\),可以通过此题。

http://www.gsyq.cn/news/54690.html

相关文章:

  • win11 WSL Ubuntu ssh远程连接工具的选择问题
  • UEFI-PEI 阶段的深层介绍 - 阿源
  • 01组-选题与需求分析报告
  • 软工第二次团队作业
  • 2025市政管道/家装管材优质厂家最新TOP5推荐:云南昆明荣德福领衔,优质PVC管道/管材品牌,聚焦排水家庭/市政管等场景
  • 251120
  • 2025云南旅行社首选——中青国旅“用心陪着你”,定制游+自驾游杜绝套路,纯净体验
  • 拆解一个真实电商项目:微服务架构中的服务治理与性能优化
  • win10里面的中文输入法在左上角的带有绿色箭头
  • [Flink] Apache Stream Park : 一站式的流处理计算开发运管平台
  • linux . profile修改
  • linux -xr
  • linux echo gt;命令
  • 2025沧州防水补漏、防水、漏水维修、堵漏、漏水检测工程单位靠谱推荐:连锁企业,深耕本地市场,沧州极冠防水实力出圈
  • 每日反思(2025年11月19日)
  • Linux脚本工具
  • 11.19 P9532 前缀和
  • Adobe Flash Player 更新提示:版本过旧,不支持运行,请升级后使用,查看升级详情
  • c++ activemq如何实现负载均衡
  • js 如何debug SharedWorker
  • NCHU-OOP-前三次大作业总结 - AC
  • NCHU-OO-前三次大作业总结 - AC
  • 【数据结构】哈希表的理论与实现 - 教程
  • 详细介绍:开源AI大模型、AI智能名片与S2B2C商城系统:个体IP打造与价值赋能的新范式
  • linux ftp自动
  • 实用指南:【案例实战】鸿蒙分布式智能办公应用的架构设计与性能优化
  • 根据图片路径将文件下载到本地
  • IO 2024 Round 3(团体赛)Unofficial Mirror【游记】【题解】
  • linux ftp用户目录
  • window开机启动无cmd脚本