BZOJ1078: [SCOI2008]斜堆
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1078
每一次进入的点一定是一个极左节点,然后将它所处在的整棵树左右翻转。加上一些情况的处理。
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cstdlib>
#include<cstdio>
#include<cmath>
#include<queue>
#define rep(i,l,r) for (int i=l;i<=r;i++)
#define down(i,l,r) for (int i=l;i>=r;i--)
#define clr(x,y) memset(x,y,sizeof(x))
#define maxn 2005
#define eps 1e-3
#define ll long long
#define inf (1LL<<50)
using namespace std;
int fa[maxn],l[maxn],r[maxn],ans[maxn],n,tot,root;
int read(){
int x=,f=; char ch=getchar();
while (!isdigit(ch)) {if (ch=='-') f=-; ch=getchar();}
while (isdigit(ch)) {x=x*+ch-''; ch=getchar();}
return x*f;
}
void solve(){
int x=root;
while (r[x]!=-) x=l[x];
int t=l[x];
if (t!=-&&l[t]==-&&r[t]==-) x=t;
ans[++tot]=x;
if (x==root) root=l[root];
int f=fa[x];
if (f!=-) l[f]=l[x],fa[l[f]]=f;
while (f!=-) swap(l[f],r[f]),f=fa[f];
}
int main(){
n=read();
fa[]=-;
clr(l,-); clr(r,-);
rep(i,,n) {
int x=read();
if (x>=) fa[i]=x-,r[x-]=i;
else fa[i]=x,l[x]=i;
}
rep(i,,n) solve();
while (tot) printf("%d ",ans[tot--]);
return ;
}
BZOJ1078: [SCOI2008]斜堆的更多相关文章
- BZOJ1078 [SCOI2008]斜堆 堆
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1078 题意概括 斜堆(skew heap)是一种常用的数据结构.它也是二叉树,且满足与二叉堆相同的 ...
- [bzoj1078][SCOI2008][斜堆] (贪心)
Description 斜堆(skew heap)是一种常用的数据结构.它也是二叉树,且满足与二叉堆相同的堆性质:每个非根结点的值都比它父亲大.因此在整棵斜堆中,根的值最小.但斜堆不必是平衡的,每个结 ...
- 【BZOJ1078】[SCOI2008]斜堆(性质题)
[BZOJ1078][SCOI2008]斜堆(性质题) 题面 BZOJ 洛谷 题解 考虑一下这道题目的性质吧.思考一下最后插入进来的数是什么样子的.首先因为它是最后插入进来的,所以一定是比某个数小,然 ...
- 【bzoj1078】[SCOI2008]斜堆
2016-05-31 16:34:09 题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1078 挖掘斜堆的性质233 http://www.cp ...
- BZOJ 1078: [SCOI2008]斜堆
1078: [SCOI2008]斜堆 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 770 Solved: 422[Submit][Status][ ...
- 【BZOJ 1078】 1078: [SCOI2008]斜堆
1078: [SCOI2008]斜堆 Description 斜堆(skew heap)是一种常用的数据结构.它也是二叉树,且满足与二叉堆相同的堆性质:每个非根结点的值都比它父亲大.因此在整棵斜堆中, ...
- 【bzoj1078】 SCOI2008—斜堆
http://www.lydsy.com/JudgeOnline/problem.php?id=1078 (题目链接) 题意 给出一个斜堆,并给出其插入的操作,求一个字典序最小的插入顺序. Solut ...
- [SCOI2008]斜堆
题目大意 1.题目描述 斜堆(skew heap)是一种常用的数据结构. 它也是二叉树,且满足与二叉堆相同的堆性质: 每个非根结点的值都比它父亲大.因此在整棵斜堆中,根的值最小. . 但斜堆不必是平衡 ...
- P2475 [SCOI2008]斜堆(递归模拟)
思路 可并堆真是一种神奇的东西 不得不说这道题是道好题,虽然并不需要可并堆,但是能加深对可并堆的理解 首先考虑斜堆的性质,斜堆和左偏树相似,有如下的性质 一个节点如果有右子树,就一定有左子树 最后插入 ...
随机推荐
- ES6/7 异步编程学习笔记
前言 在ES6的异步函数出现之前,Js实现异步编程只有settimeout.事件监听.回调函数等几种方法 settTmeout 这种方法常用于定时器与动画的功能,因为其本质上其实是浏览器的WebAPI ...
- php iconv 函数参数的区别
本文同时发表在https://github.com/zhangyachen/zhangyachen.github.io/issues/57 用户输入:英特尔® 酷睿™ i7处理器大显身手 case1 ...
- <!--[if lte IE 8][endif] ]-->IE下判断IE版本的语句
<!--[if lte IE 6]> <![endif]--> IE6及其以下版本可见 <!--[if lte IE 7]> <![endif]--> ...
- 让 kibana 后台启动的方案
为了解决启动kibana后关闭shell终端kibana自动关闭的问题,记录2种解决方案,试验后均可行. 假设kibana安装的目录为 /usr/local/kibana/ 方案一: 使用nohup ...
- 高级开发层面,针对Hibernate方面面试题的总结(对其它ORM也适用)
虽然目前mytabis用得比较多,但Hibernate相对比较容易上手,而且也有不少公司在用,所以本文就用这个举例,事实上,本文给出的面试建议也适用于各种ORM.本文摘自java web轻量级开发面试 ...
- Oracle12c_安装2——安装篇
安装分为图形安装,静默安装.推荐图形安装,出错率小,简洁明了. 1.安装vnc_server yum -y install vnc *vnc-server* 2.修改VNCServer主配置文件 ...
- ThreadLocal从源码到应用
最早接触到ThreadLocal是在阅读dianping的Cat-client,当时对它不是很理解,就搜索了一下,大概了解是一种解决线程安全问题的机制.现在再次阅读<实战java高并发程序设计& ...
- php gif处理
http://www.jb51.net/article/51702.htm https://github.com/Sybio/GifCreator https://github.com/Sybio/G ...
- window.atob()与window.btoa()方法实现编码与解码
window.atob() 与window.btoa() WindowBase64.atob() 函数用来解码一个已经被base-64编码过的数据.你可以使用 window.btoa() 方法来编码一 ...
- COM学习(四)——COM中的数据类型
上一次说到,COM为了跨语言,有一套完整的规则,只要COM组件按照规则编写,而不同的语言也按照对应的规则调用,那么就可以实现不同语言间相互调用.但是根据那套规则,只能识别接口,并调用没有参数和返回类型 ...