Codeforces Round 793 (Div. 2)D. Circular Spanning Tree(图论,思维,构造)
题目链接:https://codeforces.com/contest/1682/problem/D
题意:
给n个点,围成一个圈,你可以添加 n - 1条边使他成为一棵树,限制条件如下:
1:给长度为n的字符串,字符集为 0 和 1,对于 第i个字符,如果是1,表示第i个点的度数为奇数,反之为偶数;
2:边不能相交;
现在让你给出构造方案,如果不能构造,输出“NO”
分析:
我们分析,什么时候这棵树一定可以构造出来;
1:树都是有叶子的,故没有奇数的就 一定不行;
2:考虑一棵树是由一条条线段组成,一开始,一条线段有俩个奇数;
如果俩条线段是端点相连,那么结果还是俩个奇数;
如果一条线段连在另一线段中间,那么会变成4个奇数;
综上:如果没有奇数 或 奇数的个数是奇数个,那么无解;
现在我们来构造:
如果全部都是1,那么我们把n - 1个点连到第一个点上即可;
否则一定会有一个0,我们选取1相邻的一个0:
对于每个1,我们以他为头,依次把后面的0串起来,到最后一个0 的时候,我们把那个0的下一端连到上面我们选取那个0 那里,因为会有偶数个1,所以会有偶数个线段和0相连,是符合条件的;
时间复杂度:O(n)
代码:
哈哈哈,妙妙构造:)
__EOF__

本文作者:XiCen
本文链接:https://www.cnblogs.com/ACMER-XiCen/p/17662824.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/ACMER-XiCen/p/17662824.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现