Codeforces Round #601 (Div. 2) C League of Leesins
把每一次输入的一组数字存下来,然后把每个数字出现的组数存下来
然后找只出现过一次的数字a,那么这个数字a不是开头就是结尾,默认为开头(是哪个都无所谓),然后去找和它出现在同一组的两个数字b和c,而b和c同时出现的只有两组,除了已经知道的,就是需要去查找的,然后循环,同时存在的组数,找到两个数字a和b同时出现的组而且不是第一组,找到之后的组的第三个数字,就是要接在后面的数字,然后循环这个操作
#include <bits/stdc++.h>
using namespace std; int ma[][];//记录每组数据
vector<int>p[];//记录数字i出现过的组数
int ans[];//记录结果
int main() {
int n;
scanf("%d",&n);
for(int i=; i<=n-; i++) {
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
p[a].push_back(i);
p[b].push_back(i);
p[c].push_back(i);
ma[i][]=a;
ma[i][]=b;
ma[i][]=c;
}
auto a=,b=,c=;
int last=;//记录b和c出现过的组数
for(int i=; i<=n; i++) { //找开头的3个数(b和c的位置不重要)
if(p[i].size()==) {//如果出现的组数是1
int temp=p[i][];//记录出现的组数
last=temp;//
a=i;//记录第一个数字
for(int j=; j<=; j++) {
if(p[ma[temp][j]].size()==)b=ma[temp][j];
else if(p[ma[temp][j]].size()==)c=ma[temp][j];
}
}
if(a)break;
}
int cou=;
ans[++cou]=a;
ans[++cou]=b;
ans[++cou]=c;
while(cou!=n) {
int temp=;//记录组数
for(int i=; i<p[b].size(); i++) { //找b和c相同的组数
for(int j=; j<p[c].size(); j++) {
// 同时出现在同一组 而且不是第一组
if(p[b][i]==p[c][j]&&p[b][i]!=last) {
temp=p[b][i];//更新组数
last=temp;//更新
a=b;//往前移
b=c;//往前移
break;
}
}
if(temp)break;//如果找到了,循环结束
}
for(int i=; i<=; i++) { //
if(ma[temp][i]!=a&&ma[temp][i]!=b) { //如果成功出现的第三个数字
c=ma[temp][i];//第三个数字给c
break;//结束
}
}
ans[++cou]=c;
}
for(int i=; i<=n; i++) printf("%d ",ans[i]);
return ;
}
Codeforces Round #601 (Div. 2) C League of Leesins的更多相关文章
- Codeforce 1255 Round #601 (Div. 2) C. League of Leesins (大模拟)
Bob is an avid fan of the video game "League of Leesins", and today he celebrates as the L ...
- 【cf比赛记录】Codeforces Round #601 (Div. 2)
Codeforces Round #601 (Div. 2) ---- 比赛传送门 周二晚因为身体不适鸽了,补题补题 A // http://codeforces.com/contest/1255/p ...
- Codeforces Round #601 (Div. 2)
传送门 A. Changing Volume 签到. Code /* * Author: heyuhhh * Created Time: 2019/11/19 22:37:33 */ #include ...
- Codeforces Round #601 (Div. 2) E2. Send Boxes to Alice (Hard Version)
Codeforces Round #601 (Div. 2) E2. Send Boxes to Alice (Hard Version) N个盒子,每个盒子有a[i]块巧克力,每次操作可以将盒子中的 ...
- Codeforces Round #601 (Div. 2) E1 Send Boxes to Alice (Easy Version)
#include <bits/stdc++.h> using namespace std; typedef long long ll; ; int a[N]; int n; bool pr ...
- Codeforces Round #601 (Div. 2) D Feeding Chicken
//为了连贯,采取一条路形式,从第一行开始 也就是s型 #include <bits/stdc++.h> using namespace std; ; char str[MAXN][MAX ...
- Codeforces Round #601 (Div. 2) B Fridge Lockers
//题目要求的是每一个点最少要有两条边连接,所以可以先构成一个环.然后再把剩余的最短的边连接起来 #include<iostream> #include<algorithm> ...
- Codeforces Round #601 (Div. 2) A Changing Volume
好吧,其实我拿到这个题的时候,首先想到了bfs,写完之后,开开森森的去交代码,却在第二个数据就TEL,然后优化半天,还是不行. 最终,我盯着1,2,5发呆半天,wc,然后直接贪心 #include&l ...
- Codeforces Round #601 (Div. 2)E(寻找质因子,DP)
先分解质因数,对于当前a[i],假设当前的质因数为x,这个位置要满足能被k整除,有两个可能,要么是它向后一个转移x%k个,要么是后一个向它转移k-x%k个. 对于每一个a[i]满足后,因为只会对下一个 ...
随机推荐
- Oracle命令行导入dmp文件
一.导入准备 使用impdp命令,需要在oracle数据库服务器操作: 使用sqlplus或者Oracle客户端(PL/SQL) 链接到相应的Oracle数据库实例,进行如下操作 1. 创建逻辑目录, ...
- [Git:commit错误] Fatal: cannot do a partial commit during a merge
注:本文出自博主 Chloneda:个人博客 | 博客园 | Github | Gitee | 知乎 问题场景 今天进行Spring Boot版本升级,解决冲突后进行代码文件提交时出现这个错误. 上午 ...
- matlab 中 find() 函数用法
一. 功能: 寻找非零元素的索引和值 二.相关函数语法: ind = find(X) ind = find(X, k) ind = find(X, k, 'first') ind = find(X, ...
- 安装JumpServer到CentOS(YUM)
运行环境 系统版本:CentOS Linux release 7.6.1810 (Core) 软件版本:JumpServer-1.4.8 硬件要求:最低2核4GB 官方文档:https://docs. ...
- linux 文件系统管理三部曲之三:挂载文件系统
linux 文件系统管理三部曲之一:磁盘分区 linux 文件系统管理三部曲之二:创建文件系统 上面说明了,硬盘的划分和格式化,那么怎么使用,还没说,这里说一下,怎么使用创建好的文件系统. 使用文件系 ...
- cin,cin.get(),cin.getline(),gets(),getchar()函数的用法
1.cin>> 用法a:最基本的流输入用法,接受一个数字或字符,自动跳过输入的空格. 用法b:接受一个字符串,但是遇到除开头外的空格则会终止输入. #include<iostream ...
- Math Magic ZOJ - 3662
核心是要想到只枚举最小公倍数的因子 因为转移过程中一单添加了不是最小公倍数的因子,那么结果必然不合法,虽然最终答案是对的,但是这样的答案根本用不上,反而时间复杂度大大增加 #include<cs ...
- Rtudio 安装包报错
今天重新安装了一下Rstudio,基本上很多包都安装不上,问了度娘发现被墙了 f..k.. 解决办法,更改安装包的镜像为清华镜像 tools->gloabl options->packag ...
- MVC5+EF6 入门完整教程八:数据迁移
https://www.cnblogs.com/miro/p/4164076.html
- gulp常用插件之rev-del使用
更多gulp常用插件使用请访问:gulp常用插件汇总 rev-del这是一款从模块(如gulp-rev)生成的修订清单中删除旧的.未使用的指纹文件. 更多使用文档请点击访问rev-del工具官网. 安 ...