## 1078: [SCOI2008]斜堆

Time Limit: 10 Sec  Memory Limit: 162 MB
Submit: 770  Solved: 422
[Submit][Status][Discuss]

## Description

斜堆(skew heap)是一种常用的数据结构。它也是二叉树，且满足与二叉堆相同的堆性质：每个非根结点的值

## Input

第一行包含一个整数n。第二行包含n个整数d1, d2, ... , dn， di < 100表示i是di的左儿子，di>=100表示i

## Output

仅一行，包含n+1整数，即字典序最小的插入序列。

## Sample Input

6
100 0 101 102 1 2

0 1 2 3 4 5 6

## Source

[Submit][Status][Discuss]

``` #include <cstdio>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>

#define siz 1024

inline int get_c(void)
{
static char buf[siz];
static char *head = buf + siz;
static char *tail = buf + siz;

}

inline int get_i(void)
{
register int ret = ;
register int neg = false;
register int bit = get_c();

for (; bit < ; bit = get_c())
if (bit == '-')neg ^= true;

for (; bit > ; bit = get_c())
ret = ret *  + bit - ;

return neg ? -ret : ret;
}

#define maxn 205

int n, ans[maxn];

struct node
{
node *lson;
node *rson;
node *father;

node(void)
{
lson = NULL;
rson = NULL;
father = NULL;
}

inline void swap(void)
{
static node *temp;

temp = lson;
lson = rson;
rson = temp;
}
}tree[maxn], *root = tree;

inline int last(void)
{
node *t = root;

while (t->rson)
t = t->lson;

if (t->lson && !t->lson->lson)
t = t->lson;

if (t == root)
root = t->lson;
else
t->father->lson = t->lson;

if (t->lson)
t->lson->father = t->father;

for (node *p = t->father; p; p = p->father)
p->swap();

return int(t - tree);
}

signed main(void)
{
n = get_i();

for (int i = ; i <= n; ++i)
{
int fa = get_i();

if (fa < )
tree[i].father = tree + fa, tree[fa].lson = tree + i;
else fa -= ,
tree[i].father = tree + fa, tree[fa].rson = tree + i;
}

for (int i = n; i >= ; --i)ans[i] = last();

for (int i = ; i <= n; ++i)printf("%d ", ans[i]);

//system("pause");
}```

@Author: YouSiki

## BZOJ 1078: [SCOI2008]斜堆的更多相关文章

1. bzoj 1078 [SCOI2008]斜堆 —— 斜堆

题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1078 考察斜堆的性质: 一个点如果没有左子树,也一定没有右子树: 看了这篇精美的博客:htt ...

2. 【BZOJ 1078】 1078: [SCOI2008]斜堆

1078: [SCOI2008]斜堆 Description 斜堆(skew heap)是一种常用的数据结构.它也是二叉树,且满足与二叉堆相同的堆性质:每个非根结点的值都比它父亲大.因此在整棵斜堆中, ...

3. 【bzoj1078】[SCOI2008]斜堆

2016-05-31 16:34:09 题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1078 挖掘斜堆的性质233 http://www.cp ...

4. 【BZOJ1078】[SCOI2008]斜堆（性质题）

[BZOJ1078][SCOI2008]斜堆(性质题) 题面 BZOJ 洛谷 题解 考虑一下这道题目的性质吧.思考一下最后插入进来的数是什么样子的.首先因为它是最后插入进来的,所以一定是比某个数小,然 ...

5. 【bzoj1078】 SCOI2008—斜堆

http://www.lydsy.com/JudgeOnline/problem.php?id=1078 (题目链接) 题意 给出一个斜堆,并给出其插入的操作,求一个字典序最小的插入顺序. Solut ...

6. [SCOI2008]斜堆

题目大意 1.题目描述 斜堆(skew heap)是一种常用的数据结构. 它也是二叉树,且满足与二叉堆相同的堆性质: 每个非根结点的值都比它父亲大.因此在整棵斜堆中,根的值最小. . 但斜堆不必是平衡 ...

7. BZOJ1078 [SCOI2008]斜堆 堆

欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1078 题意概括 斜堆(skew heap)是一种常用的数据结构.它也是二叉树,且满足与二叉堆相同的 ...

8. P2475 [SCOI2008]斜堆（递归模拟）

思路 可并堆真是一种神奇的东西 不得不说这道题是道好题,虽然并不需要可并堆,但是能加深对可并堆的理解 首先考虑斜堆的性质,斜堆和左偏树相似,有如下的性质 一个节点如果有右子树,就一定有左子树 最后插入 ...

9. P2475 [SCOI2008]斜堆

题目背景 四川2008NOI省选 题目描述 斜堆(skew heap)是一种常用的数据结构.它也是二叉树,且满足与二叉堆相 同的堆性质:每个非根结点的值都比它父亲大.因此在整棵斜堆中,根的值最小. 但 ...

## 随机推荐

1. 织梦系统“当前位置”{dede:field.position}的修改方法

2. FM/PCM与FM/PPM的区别

FM/PCM的优点:     1 高可靠性和高抗干扰性.大家知道,一般PPM遥控设备都要求在操作时先开发射机后开接收机,先关接收机后关发射机.其原因是在没有发射信号时,接受机会因自身内部的噪音或外界的 ...

3. GDC 2016 神秘海域4中使用Substance制作Texture

TEXTURING UNCHARTED 4: A MATTER OF SUBSTANCE 原文链接 http://www.dualshockers.com/2016/03/16/amazing-unc ...

4. zw版【转发&#183;台湾nvp系列Delphi例程】HALCON GenGridRegion

zw版[转发·台湾nvp系列Delphi例程]HALCON GenGridRegion unit Unit1;interfaceuses Windows, Messages, SysUtils, Va ...

5. if...else..的错误用法

1.最近在写js代码完成一个前段DOM操作的函数时,自己错误的使用了if..else..控制体.为什么是错误的呢?看看我的 代码你就明白了: document.getElementsByClassNa ...

6. linux内核空间与用户空间信息交互方法

linux内核空间与用户空间信息交互方法     本文作者: 康华:计算机硕士,主要从事Linux操作系统内核.Linux技术标准.计算机安全.软件测试等领域的研究与开发工作,现就职于信息产业部软件与 ...

7. Big ball of Mud

Big ball of Mud 第一种死法:Big ball of Mud 架构里最常用的反面案例是 big ball of mud.很大程度上可以说打格子,把复杂的系统拆解成小格子是架构师最重要的工 ...

8. SQL2008R2 无法读取此系统上以前注册的服务器的列表--网上方法不可行