C - League of Leesins-构造
题意就是给多个三元组(内部没有顺序),让你构造一个序列,使得所有的三元组都是存在的
简单的思考后就会发现一个简单的思路,开头的数一定只出现一次,进而可以找到头或者尾部的第一个三元组,然后我们知道序列最开始的元素是什么,但是后面两个我们并不知道,两个的顺序是什么,但是我们知道,两个相邻的元素,可以找到连与其相邻的两个元素,然后就很简单了,每次查找下一个元素,然后看前面两个元素中,与第三个元素是否是相邻的,用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-构造的更多相关文章
- League of Leesins
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 ...
- Codeforces Round #601 (Div. 2) C League of Leesins
把每一次输入的一组数字存下来,然后把每个数字出现的组数存下来 然后找只出现过一次的数字a,那么这个数字a不是开头就是结尾,默认为开头(是哪个都无所谓),然后去找和它出现在同一组的两个数字b和c,而b和 ...
- C - League of Leesins
乱搞一发,,竟然过了!!! 题目大意:输入一个整数n,然后n-2行,每一行3个数字,表示一个数组中连续的3个数字,然后将这3个数字的顺序打乱,然后再将这个n-2行打乱,要求还原数组. 题解:先找到前3 ...
- Codeforces Round #601 (Div. 2)
传送门 A. Changing Volume 签到. Code /* * Author: heyuhhh * Created Time: 2019/11/19 22:37:33 */ #include ...
- Codeforces Gym 100425H H - Football Bets 构造
H - Football BetsTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/ ...
- 学习笔记:Maven构造版本号的方法解决浏览器缓存问题
需要解决的问题 在做WEB系统开发时,为了提高性能会利用浏览器的缓存功能,其实即使不显式的申明缓存,现代的浏览器都会对静态文件(js.css.图片之类)缓存.但也正因为这个问题导致一个问题,就是资源的 ...
- 一步步构造自己的vue2.0+webpack环境
前面vue2.0和webpack都已经有接触了些(vue.js入门,webpack入门之简单例子跑起来),现在开始学习如何构造自己的vue2.0+webpack环境. 1.首先新建一个目录vue-wk ...
- About 静态代码块,普通代码块,同步代码块,构造代码块和构造函数的纳闷
构造函数用于给对象进行初始化,是给与之对应的对象进行初始化,它具有针对性,函数中的一种.特点:1:该函数的名称和所在类的名称相同.2:不需要定义返回值类型.3:该函数没有具体的返回值.记住:所有对象创 ...
- Eos开发——构造查询条件
1.ajax 方式 var data = { orgid :orgid,year:year ,month: month,type:type,sortField:'sellEmpname' ,sortO ...
随机推荐
- openCV图像合成
#include <iostream> #include <opencv2/opencv.hpp> #include <opencv2/highgui/highgui.h ...
- Veristand学习札记(3)- CD的开发
转载:https://blog.csdn.net/mfcjishiben/article/details/79417739 1 CustomDevice开发 CD的开发必须遵照NI提供的模板进行.安装 ...
- TZ_06_SpringMVC_拦截器的配置
1. 拦截器的概述 1>. SpringMVC框架中的拦截器用于对处理器进行预处理和后处理的技术. 2>. 可以定义拦截器链,连接器链就是将拦截器按着一定的顺序结成一条链,在访问被拦截的方 ...
- android的AIDL
一.AIDL的意义: AIDL全称是Android Interface Definition Language,是android接口定义语言.AIDL就是为了避免我们一遍遍的写一些 ...
- 基于bootstrap框架在ie8以下,兼容媒体查询[css样式]
<style type="text/css"> /*基于bootstrap框架在ie8以下,兼容媒体查询*/ .row [class^="col-" ...
- Linux中管理员用户与普通用户之间的切换
使用su进行用户切换 管理员用户切换至普通用户: su [用户名] 使用su命令从高级别用户切换至低级别用户无需输入密码 普通用户切换至管理员用户: 普通用户切换至管理员用户使用 su - 使用l ...
- WPF绘图性能问题
代码: /// <summary> /// MainWindow.xaml 的交互逻辑 /// </summary> public partial class MainWind ...
- Tr A HDU 1575 (矩阵快速幂)
#include<iostream> #include<vector> #include<string> #include<cmath> #includ ...
- 元素 XXXX 的前缀 "mvc" 未绑定
这个问题是由于spring-servlet配置不全 在上边部分添加一句 xmlns:mvc="http://www.springframework.org/schema/mvc" ...
- CentOS安装手册
CentOS6.5在VMware10中安装 1.启动VMware的画面 2.点击File--->New Virtual Machine 创建一台新虚拟机 3.在弹出框中选择典型安装 4.选择I ...