首页 > 其他分享 >P2171 Hz吐泡泡 题解

P2171 Hz吐泡泡 题解

时间:2024-02-20 09:55:41浏览次数:22  
标签:Hz 泡泡 P2171 val dep 题解 int maxn

传送门

题目背景

Hz大大是一种可爱的动物(神)。他很喜欢吐泡泡(更喜欢写作业)。

题目描述

这天,Hz大大心血来潮,吐了n个不同的泡泡玩(保证没有重复的泡泡)。因为他还要写作业,所以他请你帮他把这些泡泡排序成树(左子树<=根<右子树)。输出它的后序遍历。

输入格式

共2行。

第一行,1个整数n。(1<=n<=300000)

第二行,n个数,代表泡泡的大小。

输出格式

共2行。

第一行,输出树的深度。

第二行,输出数的后序遍历。

详见样例输出。

输入输出样例

输入 #1复制

8

1 4 3 9 10 35 2 7

输出 #1复制

deep=5

2

3

7

35

10

9

4

1

说明/提示

水题一道。

题意分析

本题就是一般的二叉搜索树的建立,及二叉树的后序遍历,及求树的深度。

#include<iostream>
using namespace std;
const int maxn=300009;
int n,idx,rt,dep,maxdep=1;
int t[maxn];
int ch[maxn][2]; 
void insert(int &x,int val)
{
	if (!x)
	{
		x=++idx;
		t[x]=val;
		return ;
	}
	else
	{
		dep++;
		if (val<t[x]) insert(ch[x][0],val);
		else insert(ch[x][1],val);
	}
}
void order(int x)
{
	if (!x) return ;
	order(ch[x][0]);
	order(ch[x][1]);
	cout<<t[x]<<"\n";
}
int main()
{
	int n;
	cin>>n;
	for (int i=1;i<=n;i++)
	{
		int x;
		cin>>x;
		dep=1;
		insert(rt,x); 
		maxdep=max(maxdep,dep);
	}
	cout<<"deep="<<maxdep<<endl;
	order(rt);
}

  

标签:Hz,泡泡,P2171,val,dep,题解,int,maxn
From: https://www.cnblogs.com/smghj/p/18022437

相关文章

  • 洛谷P10179 题解
    题意简述给定\(n\)个点,要求构造出一棵树,同时有\(m\)个事件,第\(i\)个事件要求\(u_i\)和\(v_i\)用两条树边连接,即当中相隔一个点。若存在构造方案,输出Yes并输出其中一种方案,否则输出No。思维路径首先简化问题,假如我们想让一堆点互相相隔一个点,我们的做法。考虑菊花......
  • 程序设计天梯赛个人题解 L2-047-2 锦标赛
    题目分析综合题意,将最后一场比赛视为顶层,第一轮比赛视为第一层,则有:下层每场比赛选出一个胜者,每两个下层的胜者间举行本层的一次比赛,显然这是一个二叉树。考虑还原建立每场比赛的树。由于最后一层的比赛是$2^k$个选手参加,故这是个完美二叉树,使用完全二叉树的数组储存方式,则标号......
  • 洛谷-P3380/LibreOJ-106/BZOJ-3196题解
    题意简述给定一个数列,支持以下操作:查询\(k\)在区间内的排名(区间内比\(k\)小的数的个数\(+1\))查询区间内排名为\(k\)的值修改某一位值上的数值查询\(k\)在区间内的前驱(前驱定义为严格小于\(k\),且最大的数,若不存在输出-2147483647)查询\(k\)在区间内的......
  • U41492 树上数颜色 题解
    U41492树上数颜色题目描述给一棵根为1的树,每次询问子树颜色种类数输入格式第一行一个整数n,表示树的结点数接下来n-1行,每行一条边接下来一行n个数,表示每个结点的颜色c[i]接下来一个数m,表示询问数接下来m行表示询问的子树输出格式对于每个询问,输出该子树颜色数输入输出......
  • P2524 Uim的情人节礼物•其之弐 题解
    题目描述前传:详见洛谷P2525Uim成功地按照顺序将礼物送到了 N 个妹子的手里并维持她们的和谐。现在Uim现在想知道,他最终选择的顺序是所有给 N 个妹子送礼顺序中,字典序第几小的。送礼顺序可以看作1,2,⋯,N 的一个排列。输入格式第一行一个整数N,表示有 N 个数。第二......
  • P3411 序列变换 题解
    自己做不出来,看现在题解区的题解讲的都不咋清楚。懂了之后来为后人铺路。而且我的马蜂比较好看题目传送门我能看懂这道题,主要是依靠了这篇题解的帮助。首先我们只关注数的相对关系,所以可以离散化。注意到值域\(10^6\),用数组离散化。这道题可以用贪心做。(有一些定义先往下看)......
  • P5914 MOS 题解
    一道练习贪心证明的好题。绝大多数题解只是点出了以下结论:要么最快的带最慢的;要么最慢的带次慢的。并没有给出证明。我就补上这个证明。为了证明这个贪心结论,我们先证明几个引理。引理一:每次将火把带回来的,一定是对岸最快的。引理一证明:如果回来的不是对岸最快的,让对岸最......
  • CF167B题解
    CF167B这里更容易进入且有翻译题意给定初始背包容量\(k\),要进行\(n\)场比赛,每场比赛有\(p_i\%\)的概率能够胜利,赢的一场比赛能获得一个奖励——当\(a_i=-1\)时获得一个体积为\(1\)的奖品,或者当\(a_i>0\)时给背包增加\(a_i\)容量,求所有比赛结束后至少赢得\(......
  • 理想的正方形——题解
    题目描述一看正方形,得,二维数组,单调队列。单调队列可以将一个区间最大值存储,所以只需要根据给定的正方形长度先横着推一遍,再竖着推一遍,将正方形中的最大值和最小值都储存在正方形右下角方格,最后遍历即可。先以行储存以k为长度的最大/小值;再以剩下k-m横向长度的最值向下扩展k个......
  • 跨域问题解决
    跨域举例A网站部署在localhost:63343请求loocalhost:8080/api/user/add,就会出现跨域问题。同源策略同源策略:协议,主机,端口,只有这三者全部相同时,才可以相互访问。现在接口地址为101.10.11.1X:8081,请判断以下哪些可以通过:访问地址描述结果https://127.0.0.1:808......