Codeforces Round #529 (Div. 3) D. Circular Dance
题意:
有 n 个孩子编号为 1~n ,绕着圣诞树 dance;
编号为 i 的孩子可以记住ai1,ai2两个小孩,ai1,ai2是 i 在顺时针方向的相邻的两个小孩,但ai1,ai2不一定是按顺时针方向排列的;
给出每个孩子相邻两个孩子的信息,让你还原这个序列。
题解:
可以以任一孩子作为第一个孩子,假设以编号 1 为第一个,编号1有两个相邻的孩子信息 a,b
如果 b 在 a 的顺时针方向,那么第二个孩子就是 a,反之为 b。
确定了前两个孩子后
i 从 1 开始遍历,第 i 个孩子的两个相邻的孩子a,b已经确定一个在 i+1 位置了,那么剩下的那个肯定在 i+2 位置,遍历到 n-2 却id确定最终序列。
AC代码:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
#define mem(a,b) memset(a,b,sizeof(a))
const int maxn=2e5+; int n;
struct Node
{
int a,b;//i的顺时针方向相邻的两个孩子
Node(int _a=,int _b=):a(_a),b(_b){}
}nex[maxn];
bool vis[maxn];
int q[maxn]; void Solve()
{
mem(vis,false); q[]=;
int x=nex[].a,y=nex[].b;
q[]=(nex[x].a == y || nex[x].b == y ? x:y);//确定第二个位置的孩子的编号
vis[q[]]=true,vis[q[]]=true;
for(int i=;i <= n-;++i)
{
x=nex[q[i]].a;
y=nex[q[i]].b;
q[i+]=(!vis[x] ? x:y);
vis[q[i+]]=true;
}
for(int i=;i <= n;++i)
printf("%d ",q[i]);
}
int main()
{
scanf("%d",&n);
for(int i=;i <= n;++i)
{
int a,b;
scanf("%d%d",&a,&b);
nex[i]=Node(a,b);
}
Solve();
return ;
}
根据大神代码改编的简介代码%%%%%
#include<iostream>
#include<cstdio>
using namespace std;
const int maxn=2e5+; int n;
int a[maxn];
int b[maxn];
bool vis[maxn]; int Find(int nex1,int nex2)
{
return !vis[nex1] && (a[nex1] == nex2 || b[nex1] == nex2) ? :;
}
void Solve()
{
int x=;
for(int i=;i <= n;++i)
{
printf("%d ",x);
vis[x]=true;
int nex[]={a[x],b[x]};
x=nex[Find(nex[],nex[])];
}
}
int main()
{
scanf("%d",&n);
for(int i=;i <= n;++i)
scanf("%d%d",a+i,b+i);
Solve();
return ;
}
改编自大神代码
Codeforces Round #529 (Div. 3) D. Circular Dance的更多相关文章
- Codeforces Round #529 (Div. 3) D. Circular Dance (思维)
题意:有\(n\)个熊小孩,绕着树转圈圈,编号\(i\)的小孩可以记住\(a_{i,1}\)和\(a_{i,2}\)两个小孩,这两个小孩是顺时针相邻的,但谁前谁后不一定.现在给你每个小孩的\(a_{i ...
- # Codeforces Round #529(Div.3)个人题解
Codeforces Round #529(Div.3)个人题解 前言: 闲来无事补了前天的cf,想着最近刷题有点点怠惰,就直接一场cf一场cf的刷算了,以后的题解也都会以每场的形式写出来 A. Re ...
- Codeforces Round #529 (Div. 3) E. Almost Regular Bracket Sequence (思维)
Codeforces Round #529 (Div. 3) 题目传送门 题意: 给你由左右括号组成的字符串,问你有多少处括号翻转过来是合法的序列 思路: 这么考虑: 如果是左括号 1)整个序列左括号 ...
- CodeForces Round #529 Div.3
http://codeforces.com/contest/1095 A. Repeating Cipher #include <bits/stdc++.h> using namespac ...
- Codeforces Round #529 (Div. 3) 题解
生病康复中,心情很不好,下午回苏州. 刷了一套题散散心,Div 3,全部是 1 A,感觉比以前慢了好多好多啊. 这几天也整理了一下自己要做的事情,工作上要努力... ... 晚上还是要认认真真背英语的 ...
- Codeforces Round #529 (Div. 3) C. Powers Of Two
http://codeforces.com/contest/1095/problem/C 题意:给n找出k个2的幂,加起来正好等于n.例如 9,4:9 = 1 + 2 + 2 + 4 思路:首先任何数 ...
- Codeforces Round #529 (Div. 3) C. Powers Of Two(数学????)
传送门 题意: 给出一个整数 n ,问能否将 n 分解成 k 个数之和,且这 k 个数必须是2的幂. 如果可以,输出"YES",并打印出任意一组解,反之输出"NO&quo ...
- Codeforces Round #529 (Div. 3) F.Make It Connected
传送门 题意: 有 n 个顶点,每个顶点有个花费 a[ i ],连接顶点 u,v 需要花费 a[v]+a[u]的代价. 有 m 个特殊边,每条边有三个参数 u,v,w 代表的意思是连接 u,v 的花费 ...
- Codeforces Round #529 (Div. 3) E. Almost Regular Bracket Sequence(思维)
传送门 题意: 给你一个只包含 '(' 和 ')' 的长度为 n 字符序列s: 给出一个操作:将第 i 个位置的字符反转('(' ')' 互换): 问有多少位置反转后,可以使得字符串 s 变为&quo ...
随机推荐
- loadrunner -vuser
在每个负载生成器上,安装 remote agent dispatcher(process) 和 loadrunner agent 控制器指示remote agent dispatcher 在load ...
- C#中decimal,double和float的区别
float 单精度浮点 32bit,double 双精度浮点64bit,decimal是高精度 128bit,浮点型.float double 是 基本类型(primitive type),decim ...
- JUC同步锁(五)
根据锁的添加到Java中的时间,Java中的锁,可以分为"同步锁"和"JUC包中的锁". 一.同步锁--synchronized关键字 通过synchroniz ...
- User Authentication with Angular and ASP.NET Core
User authentication is a fundamental part of any meaningful application. Unfortunately, implementing ...
- MailUtils类:用于发送激活邮件
该类用于发送激活邮件 package com.itheima.utils; import java.util.Properties; import javax.mail.Authenticator; ...
- linux-shell系列6-rundeck生成host文件
nmap -sP 192.168.30.* -PS22 -oG nmap.out && awk '/Status: Up/ {print $2}' nmap.out > /tmp ...
- Crazy Circuits HDU - 3157(有源汇有上下界最小流)
给出每条边的下界 求最小流 板题 提供两个板子代码 虽然这个题 第一个比较快 但在loj上https://loj.ac/problem/117 的板题 第一个1700+ms 第二个才600+ms ...
- Ikki's Story IV - Panda's Trick POJ - 3207(水2 - sat 在圈内 还是 在圈外)
题意: 就是一个圈上有n个点,给出m对个点,这m对个点,每一对都有一条边,合理安排这些边在圈内或圈外,能否不相交 解析: 我手残 我手残 我手残 写一下情况 只能是一个在圈外 一个在圈内 即一个1一个 ...
- MS-DOS 6.22 +Vim+masm 汇编环境
安装vim 个人习惯用 vim 编辑,因此稍微折腾了一下.不用这么麻烦直接用 edit 编辑也是可以的. 原来安装的 MS-DOS 7.10 虚拟机安装好vim后无法运行,所以改用了 MS-DOS 6 ...
- nowcoder提高集训营第5场
凉 (比赛链接)[https://www.nowcoder.com/acm/contest/177#question] T1 (题目链接)[https://www.nowcoder.com/acm/c ...