题意就是给多个三元组(内部没有顺序),让你构造一个序列,使得所有的三元组都是存在的

简单的思考后就会发现一个简单的思路,开头的数一定只出现一次,进而可以找到头或者尾部的第一个三元组,然后我们知道序列最开始的元素是什么,但是后面两个我们并不知道,两个的顺序是什么,但是我们知道,两个相邻的元素,可以找到连与其相邻的两个元素,然后就很简单了,每次查找下一个元素,然后看前面两个元素中,与第三个元素是否是相邻的,用map瞎搞就行,但是要注意代码的交叉覆盖

#include <bits/stdc++.h>
#define LL long long
#define pii pair<int,int>
#define rep(i,j,k) for(int i=j;i<=k;i++)
#define per(i,j,k) for(int i=j;i>=k;i--)
#define mp make_pair
using namespace std;
const int maxx =2e5+;
map<pii,int>p;
map<pii,int>pp;
int vis[maxx];
int ar[maxx][];
vector<int>ans;
int main(){
int n;
scanf("%d",&n);
p.clear();
int a,b,c;
memset(vis,,sizeof(vis));
rep(i,,n-){
scanf("%d%d%d",&ar[i][],&ar[i][],&ar[i][]);
a=ar[i][];
b=ar[i][];
c=ar[i][];
if(p[mp(min(a,b),max(a,b))]==){
p[mp(min(a,b),max(a,b))]=c;
}else {
pp[mp(min(a,b),max(a,b))]=c;
}
if (p[mp(min(a,c),max(a,c))]==){
p[mp(min(a,c),max(a,c))]=b;
}else {
pp[mp(min(a,c),max(a,c))]=b;
}
if (p[mp(min(b,c),max(b,c))]==){
p[mp(min(c,b),max(c,b))]=a;
}else {
pp[mp(min(c,b),max(c,b))]=a;
}
vis[a]++;
vis[b]++;
vis[c]++;
}
int st=;
for (int i=;i<=n;i++){
if (vis[ar[i][]]==){
a=ar[i][];
b=ar[i][];
st=ar[i][];
break;
}else if (vis[ar[i][]]==){
a=ar[i][];
b=ar[i][];
st=ar[i][];
break;
}else if(vis[ar[i][]]==){
a=ar[i][];
b=ar[i][];
st=ar[i][];
break;
}
}
ans.push_back(st);
if (pp[mp(min(a,b),max(a,b))]==st){
c=p[mp(min(a,b),max(a,b))];
}else {
c=pp[mp(min(a,b),max(a,b))];
}
int cc;
for (int i=;i<=n-;i++){
if (pp[mp(min(a,c),max(a,c))]!=){
ans.push_back(b);
if (pp[mp(min(a,c),max(a,c))]==b){
cc=c;
//这里要把c提出来,因为后面c已经改变的了,但是我们还是要用这个原来的值
c=p[mp(min(a,cc),max(a,cc))];
b=cc;
a=a;
}else {
cc=c;
c=pp[mp(min(a,cc),max(a,cc))];
b=cc;
a=a;
}
}else {
ans.push_back(a);
if (pp[mp(min(b, c), max(b, c))]==a) {
cc=c;
c = p[mp(min(b, cc), max(b, cc))];
a = b;
b = cc;
}else {
cc=c;
c = pp[mp(min(b, cc), max(b, cc))];
a = b;
b = cc;
}
}
}
if (p[mp(min(b,c),max(b,c))]){
ans.push_back(a);
if (vis[b]==){
ans.push_back(c);
ans.push_back(b);
}else {
ans.push_back(b);
ans.push_back(c);
}
}else {
ans.push_back(b);
if (vis[a]==){
ans.push_back(c);
ans.push_back(a);
}else{
ans.push_back(a);
ans.push_back(c);
}
} for (auto it:ans){
printf("%d ",it);
}
cout<<endl;
return ;
}
/*
5
4 1 2
4 3 2
2 3 5
* */

C - League of Leesins-构造的更多相关文章

  1. League of Leesins

    C - League of Leesins 首先找到每一串数字的头和尾两个数字,这两个数字有一个特点,就是它们在输入数据的时候都只会出现一次.我们在输出的时候用头和尾做第一数都可以. 然后第二个数只会 ...

  2. 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 ...

  3. Codeforces Round #601 (Div. 2) C League of Leesins

    把每一次输入的一组数字存下来,然后把每个数字出现的组数存下来 然后找只出现过一次的数字a,那么这个数字a不是开头就是结尾,默认为开头(是哪个都无所谓),然后去找和它出现在同一组的两个数字b和c,而b和 ...

  4. C - League of Leesins

    乱搞一发,,竟然过了!!! 题目大意:输入一个整数n,然后n-2行,每一行3个数字,表示一个数组中连续的3个数字,然后将这3个数字的顺序打乱,然后再将这个n-2行打乱,要求还原数组. 题解:先找到前3 ...

  5. Codeforces Round #601 (Div. 2)

    传送门 A. Changing Volume 签到. Code /* * Author: heyuhhh * Created Time: 2019/11/19 22:37:33 */ #include ...

  6. Codeforces Gym 100425H H - Football Bets 构造

    H - Football BetsTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/ ...

  7. 学习笔记:Maven构造版本号的方法解决浏览器缓存问题

    需要解决的问题 在做WEB系统开发时,为了提高性能会利用浏览器的缓存功能,其实即使不显式的申明缓存,现代的浏览器都会对静态文件(js.css.图片之类)缓存.但也正因为这个问题导致一个问题,就是资源的 ...

  8. 一步步构造自己的vue2.0+webpack环境

    前面vue2.0和webpack都已经有接触了些(vue.js入门,webpack入门之简单例子跑起来),现在开始学习如何构造自己的vue2.0+webpack环境. 1.首先新建一个目录vue-wk ...

  9. About 静态代码块,普通代码块,同步代码块,构造代码块和构造函数的纳闷

    构造函数用于给对象进行初始化,是给与之对应的对象进行初始化,它具有针对性,函数中的一种.特点:1:该函数的名称和所在类的名称相同.2:不需要定义返回值类型.3:该函数没有具体的返回值.记住:所有对象创 ...

  10. Eos开发——构造查询条件

    1.ajax 方式 var data = { orgid :orgid,year:year ,month: month,type:type,sortField:'sellEmpname' ,sortO ...

随机推荐

  1. goland快捷键使用

    查找替换: 格式化代码块:ctrl+alt+L将选中的行自动对齐:ctrl+alt+I优化没必要的imports:ctrl+alt+O展开代码块:ctrl+“+”展开文件中所有代码块:ctrl+shi ...

  2. LUOGU P4095 [HEOI2013]Eden 的新背包问题

    题目描述 " 寄 没 有 地 址 的 信 ,这 样 的 情 绪 有 种 距 离 ,你 放 着 谁 的 歌 曲 ,是 怎 样 的 心 情 . 能 不 能 说 给 我 听 ." 失忆的 ...

  3. shell mysql数据迁移/备份

    保存为.sh文件,配置运行即可 #!/bin/bash #### change the values below where needed..... #### 多数据库DBNAMES="My ...

  4. Jan's light oj 01--二分搜索篇

    碰到的一般题型:1.准确值二分查找,或者三分查找(类似二次函数的模型). 2.与计算几何相结合答案精度要求比较高的二分查找,有时与圆有关系时需要用到反三角函数利用 角度解题. 3.不好直接求解的一类计 ...

  5. poj 2318 TOYS(计算几何 点与线段的关系)

    TOYS Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 12015   Accepted: 5792 Description ...

  6. ThinkPHP中实现微信支付(jsapi支付)流程

    https://blog.csdn.net/sinat_35861727/article/details/72783988 之前写过一篇文章讲了 PHP实现微信支付(jsapi支付)流程 ,详见文章: ...

  7. nginx在win系统下的安装配置与tomcat集成springmvc框架

    先来一个常用命令 验证配置是否正确: nginx -t 查看Nginx的版本号:nginx -V 启动Nginx:start nginx 快速停止或关闭Nginx:nginx -s stop 正常停止 ...

  8. day37 09-Struts2和Hibernate整合环境搭建

    <!-- 设置本地Session --> <property name="hibernate.current_session_context_class"> ...

  9. 2019-9-2-win10-uwp-存放网络图片到本地

    title author date CreateTime categories win10 uwp 存放网络图片到本地 lindexi 2019-09-02 12:57:38 +0800 2018-2 ...

  10. 从0开始学习 GitHub 系列之「04.向GitHub 提交代码」

    之前的这篇文章「从0开始学习 GitHub 系列之「Git速成」」相信大家都已经对 Git 的基本操作熟悉了,但是这篇文章只介绍了对本地 Git 仓库的基本操作,今天我就来介绍下如何跟远程仓库一起协作 ...