• 题意:

    构造题,节点1~n顺时针排列成圆形,告诉你每个点度数奇偶性,让你构造一棵树,树边不相交。
  • 思路:

    因为每条边给总度数贡献2,因此如果度数为1的点有奇数个,直接输出no。显然0个度数为1的,也输出no。

    找到每个1,把1往后的部分分到一组,第二组的最后一个连第一组的最后一个,然后3组往后的最后一个连第一组的第一个(1)。
  • code:
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+5;
char s[N];
int a[N];
int main() {
int T;scanf("%d",&T);
while(T--) {
int n;scanf("%d",&n);
scanf("%s",s+1);
int tot=0;
for(int i=1;i<=n;i++) if(s[i]=='1') {a[++tot]=i;}
if(!tot||(tot&1)) {printf("NO\n");continue;}
printf("YES\n");
int lst1=0;
for(int i=1;i<=tot;i++) {
int nxt=a[(i==tot)?1:i+1];
for(int j=a[i];;) {
int k=(j==n)?1:j+1;
if(k==nxt) {
if(i==1) {lst1=j;}
else if(i==2) {printf("%d %d\n",lst1,j);}
else {printf("%d %d\n",a[1],j);}
break;
}
else {printf("%d %d\n",j,k);}
j=k;
}
}
}
return 0;
}

CF1682D Circular Spanning Tree的更多相关文章

  1. Codeforces 1682 D Circular Spanning Tree

    题意 1-n排列,构成一个圆:1-n每个点有个值0或者1,0代表点的度为偶数,1代表点的度为计数:询问能否构成一棵树,树的连边在圆内不会相交,在圆边上可以相交,可以则输出方案. 提示 1. 首先考虑什 ...

  2. 【HDU 4408】Minimum Spanning Tree(最小生成树计数)

    Problem Description XXX is very interested in algorithm. After learning the Prim algorithm and Krusk ...

  3. 数据结构与算法分析–Minimum Spanning Tree(最小生成树)

    给定一个无向图,如果他的某个子图中,任意两个顶点都能互相连通并且是一棵树,那么这棵树就叫做生成树(spanning tree). 如果边上有权值,那么使得边权和最小的生成树叫做最小生成树(MST,Mi ...

  4. Educational Codeforces Round 3 E. Minimum spanning tree for each edge LCA/(树链剖分+数据结构) + MST

    E. Minimum spanning tree for each edge   Connected undirected weighted graph without self-loops and ...

  5. Codeforces Edu3 E. Minimum spanning tree for each edge

    time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standa ...

  6. CF# Educational Codeforces Round 3 E. Minimum spanning tree for each edge

    E. Minimum spanning tree for each edge time limit per test 2 seconds memory limit per test 256 megab ...

  7. Codeforces Educational Codeforces Round 3 E. Minimum spanning tree for each edge LCA链上最大值

    E. Minimum spanning tree for each edge 题目连接: http://www.codeforces.com/contest/609/problem/E Descrip ...

  8. MST(Kruskal’s Minimum Spanning Tree Algorithm)

    You may refer to the main idea of MST in graph theory. http://en.wikipedia.org/wiki/Minimum_spanning ...

  9. HDU 4408 Minimum Spanning Tree 最小生成树计数

    Minimum Spanning Tree Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot ...

随机推荐

  1. 前端面试题整理——VUE相关题目与回答

    1.v-if与v-show的区别? v-if的原理是根据判断条件来动态的进行增删DOM元素, v-show是根据判断条件来动态的进行显示和隐藏元素,频繁的进行增删DOM操作会影响页面加载速度和性能所以 ...

  2. Column ‘name’ in where clause is ambiguous;

    内容 一.异常信息 严重: Servlet.service() for servlet [dispatcherServlet] in context with path [] threw except ...

  3. CentOS7 Network Setting

    #display devices[root@localhost ~]# nmcli d #set ipv4 address[root@localhost ~]# nmcli c modify eth0 ...

  4. Oracle安装 - shmmax和shmall设置

    一.概述 在Linux上安装oracle,需要对内核参数进行调整,其中有shmmax和shmall这两个参数,那这两个参数是什么意思,又该如何设置呢? 二.官方文档 在oracle的官方文档( htt ...

  5. linux升级Nginx1.6到Nginx1.12.2

    我的升级环境: 旧版Nginx:1.6 新版Nginx:1.12.2 系统:Redhat 5.5 64位     前期准备 1.查看Nginx的安装位置 ps -ef |grep nginx  --如 ...

  6. redis集群在线迁移第二篇(redis迁移后调整主从关系,停掉14机器上的所有从节点)-实战二

    变更需求为: 1.调整主从关系,所有节点都调整到10.129.51.30机器上 2.停掉10.128.51.14上的所有redis,14机器关机 14机器下线迁移至新机房,这段时间将不能提供服务. 当 ...

  7. Go xmas2020 学习笔记 05、Arrays, Slices, and Maps

    05-Arrays, Slices, and Maps. In memory. Array. Slice. fence post error. Compare Array and Slice . Ma ...

  8. 一款开源的文件搜索神器,终于不用记 find 命令了

    这是 HelloGitHub 推出的<讲解开源项目>系列,用一篇文章带你快速上手有趣的开源项目. 今天给大家推荐一个好用+开源的文件搜索工具--fd 该工具支持大多数主流操作系统,快来更新 ...

  9. GitHub 自动合并 pr 的机器人——auto-merge-bot

    本文首发于 Nebula Graph Community 公众号 背景 作为一款开源的分布式图数据库产品,Nebula 所有的研发流程都在 GitHub 上运作.基于 GitHub 生态 Nebula ...

  10. Fastjson tomcat-dhcp链

    Fastjson tomcat-dbcp链 这条链可直接回显,可以解决fastjson在内网的情况,因为很多实战的时候,fastjson的应用部署在内网,只映射一个端口出来,导致前面学习的jdbcRo ...