第三章 树
2423 叶子节点的数量 AC 3.7
2282 树的深度 AC 3.7
2281 树的Size之和 AC 3.7
2627 树的深度及子树大小 AC 3.10
3039 叶子节点的路径 AC 3.11
2599 最近公共祖先(LCA) AC 3.11
2621 树上距离 AC
2675 开疆扩土
1591 二叉树先序遍历 AC
2064 二叉树中序遍历 AC
2350 二叉树后序遍历 AC
3022 奇怪的二叉树
3021 有趣的二叉树
2605 没有上司的舞会
2602 树的直径 AC
2610 粗心的小Biu
175 区间中第K大的数 AC 2.22
2021.2.22
51nod-1175 区间中第K大的数**
解题思路:
分治(70分)。
任取一个数组当中的数x(第一个,最后一个,或者随机都行),
考虑把数组分为三段,小于x的数,等于x的数和大于x的数。
然后判断
如果大于x的数的数目多余k个,说明答案应该在大于x这段里面,递归调用函数即可;
否则:
1、如果大于和等于x的数目大于等于k,说明答案就是x;
2、否则,答案应该在小于x这段里面,递归函数即可,但是数目应该是k减去大于和等于两段的数目。
#include<iostream>
#include<cstdio>
#include<algorithm>
#include <vector>
using namespace std;
int N,Q,I,J,K;
vector <int> a;
int f(vector <int> b, int st, int ed, int