Codeforces link

Luogu link

题解 CF1682D

Part 0. 无解情况

首先考虑无解情况。

首先,若 sss 中 1\texttt{1}1 的个数是奇数,肯定无解。

其次,树肯定是有叶子的,而叶子的度数肯定是 111,所以若 sss 中没有任何一个 1\texttt{1}1,也无解。

其余情况都有解。


Part 1. 含有偶数度数节点的情况

我们可以把序列拆分成若干个 [0,0,...,0,1][\texttt0,\texttt0,...,\texttt0,\texttt1][0,0,...,0,1] 的子序列(单独的 1\texttt11 也可以作为一个子序列)。注意这是个环,所以序列首尾相接。然后任意挑出一个位于某个子序列首的 0\texttt00 作为根。接下来:

  • 每个序列连成一条链;
  • 每个序列的第一个元素接上根节点。

因为 1\texttt11 有偶数个,所以链也有偶数条,从而根节点的度数也是偶数,符合题意。


Part 2. 不含有偶数度数节点的情况

任意挑一个节点为根,构造菊花图即可。

//CF1682D
#include <cstdio>const int N = 2e5 + 10;
int t, n;
char s[N];int main(){scanf("%d", &t);while(t--){scanf("%d%s", &n, s+1);int cnt = 0;for(int i = 1; i <= n; ++ i){if(s[i] == '1'){++ cnt;}}if(cnt == 0 || cnt & 1){puts("NO");continue;}puts("YES");if(cnt == n){for(int i = 2; i <= n; ++ i){printf("1 %d\n", i);}continue;}int st = 0;if(s[n] == '1' && s[1] == '0'){st = 1;} else {for(int i = 1; i <= n; ++ i){if(!st && s[i] == '0' && s[i-1] == '1'){st = i;}}}#define pre(i) (i==1 ? n : i-1)#define nxt(i) (i==n ? 1 : i+1)bool flg = true;for(int i = st+1; flg || i < st; ++ i){if(i == n+1){i = 1;if(st == 1) break;flg = false;}if(pre(i) == st || s[pre(i)] == '1'){printf("%d %d\n", i, st);}if(s[i] == '0'){printf("%d %d\n", i, nxt(i));}}}return 0;
}

题解 [CF1682D] Circular Spanning Tree相关推荐

  1. Minimum spanning tree HDU - 6954

    Minimum spanning tree HDU - 6954 题意: 给定n-1个点,编号从2到n,两点a和b之间的边权重为lcm(a,b).请找出它们形成的最小生成树. 2<=n<= ...

  2. 2021ICPC(澳门) - LCS Spanning Tree(广义后缀自动机)

    题目链接:点击查看 题目大意:给出一个含有 nnn 个点的无向图,点权为一个字符串,每条边的边权为相邻两点的 LCSLCSLCS,本题的 LCSLCSLCS 定义为两个字符串的最长公共子串的长度 求出 ...

  3. 2019ICPC(上海) - Spanning Tree Removal(构造)

    题目链接:点击查看 题目大意:给出一个 nnn 个点的无向完全图,每次操作可以删掉包含 nnn 个点的一棵生成树中的所有边,问最多可以删几次 题目分析:典中典之欧拉通路构造题,构造方式如下: 在选定某 ...

  4. Spanning Tree Protocol介绍

    Spanning Tree Protocol(STP)主要是用在网桥上,用来避免网络回路,并制造冗余连接(也就是保证网络的可靠性). 这里只是一个大概的介绍,具体的还是要去看IEEE 的 802.1D ...

  5. Directed Minimum Spanning Tree: Chu-Liu/Edmonds Algorithm

    我们的现代数据库大作业要求实现一个图查询系统,包括基于属性的子图查询.可达性查询(可选).最短路径查询(可选).TopK最短路径查询(可选).图形化展示(可选)等功能.分成子图同构查询小组以及可达性及 ...

  6. 《Boost》Part1 Minimum Spanning Tree

    <Boost>Part1 Minimum Spanning Tree 1.Boost中的最小生成树介绍 MST最小生成树,是图论中的基本算法,还有一种是最大生成树,此处暂不介绍. 最小生成 ...

  7. 数据结构与算法笔记:贪心策略之BSTBBST, Hashtable+Dictionary+Map, Priority Queue~Heap, Minium Spanning Tree

    BST & BBST BST(Binary Search Tree) 二叉搜索树,也就是使用二叉树来做查找 BBST(Balanced Binary Search Tree) 平衡二叉搜索树 ...

  8. 【Codeforces Round #544 (Div. 3) F2. Spanning Tree with One Fixed Degree】DFS

    F2. Spanning Tree with One Fixed Degree 题意 给你nnn个点mmm条边的无向联通图,找出一棵生成树,使111这个点的度=d=d=d. 1≤n,m≤1051 \l ...

  9. 计算机网络之STP(Spanning Tree Protocol)生成树协议详解及其实验配置

    目录 1.STP概念 1.1  STP选举过程 1.1.1 根桥和根端口的选举 1.1.2 端口角色的选举 2.STP端口状态解释及转换 2.1 STP的五种端口状态 2.2 STP过程中的两种常见问 ...

  10. 第十三章 ALDS1_12_A:Minimum Spanning Tree 最小生成树

    知识点 树是没有环的图 在树中,任意顶点r和顶点v之间必然存在着1条路径 生成树:拥有图G的所有顶点,并且在保证自身是树的前提下拥有尽量多的边. 最小生成树(MST):个边权值总和最小的生成树 普里姆 ...

最新文章

  1. 用思维导图做的求婚计划,哈哈哈
  2. 包邮免费送2022年科研人专属趣味台历,微科盟年终福利,错过悔一年!
  3. printf函数输出超出int时怎么办
  4. 浏览器兼容问题 透明度 position:fixed bootstrap
  5. 【转】从TXT导入到dataGridView
  6. 有参组装新转录本cufflinks_RNA-Seq流程(cutadapt-tophat2-cufflinks)
  7. linux备份根目录与还原脚本,Shell脚本备份和还原MBR(主引导记录)
  8. 计算机毕业设计源码—SpringBoot+Vue疫情防控管理系统
  9. ureport2使用
  10. ffmpeg处理——*.flv视频文件和*.ass字幕文件合并成mp4
  11. python 读取geotiff_python gdal 写GeoTiff文件
  12. mysql如何找回误删除数据_mysql如何找回误删除数据
  13. 魔百盒CM211-1-晶晨S905L3B芯片系列-红外蓝牙线刷固件及教程
  14. Wireshark抓取ping包
  15. css grid布局中的minmax()函数的使用
  16. 040 字符升序排列
  17. Lasso 和 Ridge回归中的超参数调整技巧
  18. jquery国际化 i18n.js
  19. 《第一行代码》学习笔记——第1章 开始启程,你的第一行Android代码
  20. Modern GMT Series:Slice in 3D View (三维切片图)

热门文章

  1. win7去除快捷方式小箭头
  2. CAS132172-61-3阳离子脂质体DOTAP科研用
  3. 查询学过“叶平”老师所教的所有课的同学的学号、姓名
  4. 优化iphone存储空间,以及优化iphone内存。
  5. NX/UG二次开发—建模—批量创建重复特征方案优化
  6. 久邦GOMO总裁朱志在2018校招生交流会分享
  7. 原创玄幻小说--那时花开--第一章前序
  8. html标签和css参数
  9. BitTorrent下载原理和演示
  10. 防火墙的原理、主要技术、部署及其优缺点