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 ...
随机推荐
- vim编辑器操作①
Linux文本编辑器: 行编辑器:sed 全屏编辑器:nano,vi/vim 本文主要介绍说明vim编辑器的相关使用: 其有三种模式,即: 编辑模式(默认模式).插入模式(输入模式).末行模式(内置的 ...
- Dockerfile 编写
转: https://blog.fundebug.com/2017/05/15/write-excellent-dockerfile/如何编写最佳的Dockerfile 译者按: Dockerfile ...
- Eclipse安装FindBugs
Eclipse安装FindBugs 1.使用Eclipse的help在线安装,安装地址” FindBugs - http://findbugs.cs.umd.edu/eclipse-daily“. 2 ...
- 关于springmvc 只能在index.jsp页面显示图片的处理办法jsp页面无法显示图片
首先,已经配置好了mvc对静态资源的处理 只有index,jsp可以显示图片 其他页面同样的代码则不显示 后来折腾了半天,发现 index是static的父目录的级别文件 可以向下访问 但是其他的js ...
- Orleans 整体介绍
背景 Orleans 是微软开源的Actor模型开发框架. Actor模型 此模型解决了并发编程时对资源竞争使用的问题,将对同一个业务数据的访问从并行变为串行执行,降低了多线程编程的难度,使普通编程人 ...
- tcpdump概述
tcpdump是一个用于截取网络分组,并输出分组内容的工具.tcpdump凭借强大的功能和灵活的截取策略,使其成为类UNIX系统下用于网络分析和问题排查的首选工具. tcpdump提供了源代码,公开了 ...
- Hdu 1068 最小路径覆盖
Girls and Boys Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- springboot自定义错误页面(转)
方法一:Spring Boot 将所有的错误默认映射到/error, 实现ErrorController @Controller @RequestMapping(value = "error ...
- Bnd教程(1):如何用命令行安装bnd
1. 如果你用的是MacOS,请运行: brew install bnd 然后运行bnd version看是否安装成功: $ bnd version 4.0.0.201801191620-SNAPSH ...
- 【codeforces Manthan, Codefest 17 C】Helga Hufflepuff's Cup
[链接]h在这里写链接 [题意] k是最高级别的分数,最高界别的分数最多只能有x个. 1<=k<=m; 和k相邻的点的分数只能小于k; n个点的树,问你每个 ...