洛谷 P2171 Hz吐泡泡
Posted 一蓑烟雨任生平
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了洛谷 P2171 Hz吐泡泡相关的知识,希望对你有一定的参考价值。
题目背景
Hz大大是一种可爱的动物(神)。他很喜欢吐泡泡(更喜欢写作业)。
题目描述
这天,Hz大大心血来潮,吐了n个不同的泡泡玩(保证没有重复的泡泡)。因为他还要写作业,所以他请你帮他把这些泡泡排序成树(左子树<=根<右子树)。输出它的后序遍历。
输入输出格式
输入格式:
共2行。
第一行,1个整数n。(1<=n<=300000)
第二行,n个数,代表泡泡的大小。
输出格式:
共2行。
第一行,输出树的深度。
第二行,输出数的后序遍历。
详见样例输出。
输入输出样例
说明
水题一道。
思路:模拟堆
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> int n,cnt,deep,bns,root; struct data{ int ls,rs,val; }tr[300007]; int max(int a,int b){ if(a<b) return b; else return a; } void insert(int& rt,int x){ ++bns; if(!rt){ rt=++cnt;tr[rt].val=x;deep=max(deep,bns);return; } if(x>tr[rt].val) insert(tr[rt].rs,x); else insert(tr[rt].ls,x); return; } void dfs(int rt){ if(tr[rt].ls) dfs(tr[rt].ls); if(tr[rt].rs) dfs(tr[rt].rs); printf("%d\n",tr[rt].val); } int main(){ scanf("%d",&n); for(int i=1;i<=n;i++){ bns=0;int x; scanf("%d",&x); insert(root,x); } printf("deep=%d\n",deep); dfs(root); }
以上是关于洛谷 P2171 Hz吐泡泡的主要内容,如果未能解决你的问题,请参考以下文章
牛客练习——吐泡泡(简单的栈的运用题:别被多组输入恶心到了)
2018年全国多校算法寒假训练营练习比赛(第二场)A.吐泡泡
吐泡泡(2018年全国多校算法寒假训练营练习比赛(第二场)+栈模拟)+Plug-in(codeforces81A+栈模拟)