CF1131F Asya And Kittens
[Luogu-CF1131F]
给定n个点的序列,一开始有n个块,每次将两个块合并,并告诉你这两个块中的一对元素,求一种可能的原序列
我们可以建立一个由多个二叉树组成的森林,并用并查集维护每个节点所在二叉树的根节点。
具体是这样的,如果当前是将\(x_{i},y_{i}\)所在的连通分量放在相邻的位置上,那么就将他们所在二叉树的根节点作为它们新的根节点。
然后在整个二叉树上进行dfs,得到的序列就是答案。
原理很显然,因为这样能保证一个非叶节点的左右儿子为相邻的连通分量。
#include<cstdio>
#define Rint register int
using namespace std;
const int N = 300003;
int n, cnt, fa[N], head[N], to[N << 1], nxt[N << 1];
inline void add(int a, int b){static int cnt = 0;to[++ cnt] = b; nxt[cnt] = head[a]; head[a] = cnt;
}
inline int getfa(int x){return x == fa[x] ? x : fa[x] = getfa(fa[x]);
}
inline void dfs(int u){if(u <= n){printf("%d ", u); return;}for(Rint i = head[u];i;i = nxt[i])if(to[i] != fa[u]) dfs(to[i]);
}
int main(){scanf("%d", &n); cnt = n;for(Rint i = 1;i <= (n << 1);i ++) fa[i] = i;for(Rint i = 1;i < n;i ++){int a, b;scanf("%d%d", &a, &b);a = getfa(a); b = getfa(b);add(++ cnt, a); add(cnt, b);fa[cnt] = fa[a] = fa[b] = cnt;}dfs(cnt);
}
转载于:https://www.cnblogs.com/lizehon/p/10521069.html
CF1131F Asya And Kittens相关推荐
- [CF1131F] Asya And Kittens
Description: 给定n个点的序列,一开始有n个块,每次将两个块合并,并告诉你这两个块中的一对元素,求一种可能的原序列 Hint: \(n \le 1.5*10^5\) Solution: 实 ...
- 【CodeForces - 1131F 】Asya And Kittens(并查集,思维)
题干: Asya loves animals very much. Recently, she purchased nn kittens, enumerated them from 11 and nn ...
- Asya And Kittens
https://codeforces.com/contest/1131/problem/F 题解:并查集+路径压缩+DFS+树 /* *@Author: STZG *@Language: C++ */ ...
- F. Asya And Kittens
http://codeforces.com/contest/1131/problem/F 题意:有n只猫相邻有隔板隔着,n-1对(x,y)输入表示取下某一隔板能使x与y猫在一起,取下后两笼合并,里面的 ...
- php网页爬虫-简单的类
class PhpSpiders { public $useragent ; //user-agent public $title ; // 标题 public $encoding ; //编码 pu ...
- Codeforces Round #541 (Div. 2)
Codeforces Round #541 (Div. 2) 题号 题目 知识点 A Sea Battle 思维 B Draw! 贪心模拟 C Birthday 思维 D Gourmet choice ...
- Codefroces1077F2. Pictures with Kittens (hard version)
Codefroces1077F2. Pictures with Kittens (hard version) 做法:裸的单调队列优化dp #include <bits/stdc++.h> ...
- Codeforces 1077F2 Pictures with Kittens (hard version)(DP+单调队列优化)
题目链接:Pictures with Kittens (hard version) 题意:给定n长度的数字序列ai,求从中选出x个满足任意k长度区间都至少有一个被选到的最大和. 题解:数据量5000, ...
- Codeforces Round #521 (Div. 3): F. Pictures with Kittens(DP+单调队列)
题意: 你有n幅画,第i幅画的好看程度为ai,再给你两个数字k,x,表示你要从中选出刚好x幅画,并且相邻两幅画的距离不能≥k,好看程度之和最大能多少,选不出来输出-1,F1数据范围<200,F2 ...
最新文章
- 【 FPGA 】FIR 滤波器之Single-rate FIR滤波器的系数数据(Filter Coefficient Data)
- 分解得到的时频域特征_【推荐文章】基于变分模态分解和广义Warblet变换的齿轮故障诊断...
- 自建DNS服务器,了解一代防火墙必备网络环境,局域网设备域名访问教程
- Python编程基础:第三十九节 面向对象编程Object Oriented Programming
- Vue.js——十分钟入门Vuex
- ER图转换成关系模式集的规则
- 微课|《Python编程基础与案例集锦(中学版)》第4章例题讲解(2)
- 更改select里面的值
- SNPP/VIIRS 数据介绍和下载
- nginx安装问题 Makefile Error 127
- 树莓派python编程小车_树莓派智能车AlphaBot教程11:Python 网络编程
- 西威驱动板PV33-4 电源驱动板图纸 37千瓦左右基本一样 文件发送非实物
- ETL数据抽取 全量 增量
- 万能收钱码-多合一收款二维码原理及源码-支持支付宝、微信、QQ
- 浮点数取绝对值的方法
- 全面解读流程图|附共享单车摩拜ofo案例分析
- OpenFOAM中重力的植入方式
- 查看windows显卡内存详细信息
- python将一个正整数分解质因数
- 基于MATLAB/Simulink的电力电子电路仿真技术——三相电流滞环跟踪逆变器