链接:https://ac.nowcoder.com/acm/contest/368/B
来源:牛客网

题目描述

有一棵n个节点的二叉树,1为根节点,每个节点有一个值wi。现在要选出尽量多的点。

对于任意一棵子树,都要满足:

如果选了根节点的话,在这棵子树内选的其他的点都要比根节点的值

如果在左子树选了一个点,在右子树中选的其他点要比它

输入描述:

 

第一行一个整数n。

第二行n个整数wi,表示每个点的权值。

接下来n行,每行两个整数a,b。第i+2行表示第i个节点的左右儿子节点。没有为0。

n,a,b≤10^5,   −2×10^9≤wi≤2×10^9

输出描述:

一行一个整数表示答案。

示例1

输入

复制

5
1 5 4 2 3
3 2
4 5
0 0
0 0
0 0 

输出

复制

3

思路:问题转换为求二叉树的前序遍历序列(先右后左)的一个最长上升子序列的长度。。。

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll inf=0x3f3f3f3f3f3f3f3f;
int n;ll w[100005];
int l[100005];int r[100005];
int ans=0;
ll b[100005];int cnt=0;
void dfs(int i)
{b[cnt++]=w[i];if(r[i]!=0)dfs(r[i]);if(l[i]!=0)dfs(l[i]);
}
int tmp[100005];
int main()
{scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%lld",&w[i]);for(int i=1;i<=n;i++){scanf("%d%d",&l[i],&r[i]);}dfs(1);int len=0;for(int i=0;i<cnt;i++){int id=lower_bound(tmp,tmp+len,b[i])-tmp;tmp[id]=b[i];len=max(len,id+1);}cout<<len<<endl;return 0;
}

牛客练习赛39 B.选点相关推荐

  1. 牛客练习赛39 B 选点(dfs序+LIS)

    题意: 有一棵n个节点的二叉树,1为根节点,每个节点有一个值wi.现在要选出尽量多的点. 对于任意一棵子树,都要满足: 如果选了根节点的话,在这棵子树内选的其他的点都要比根节点的值大: 如果在左子树选 ...

  2. 牛客练习赛39 B:选点(二叉树遍历+LIS)

    链接: https://ac.nowcoder.com/acm/contest/368/B 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 131072K,其他语言262 ...

  3. 牛客练习赛81 E. 小 Q 与函数求和 1( “简单莫比乌斯反演” ,欧拉函数性质)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 牛客练习赛81 E. 小 Q 与函数求和 1( "简单莫比乌斯反演" ) Prob ...

  4. 解题报告(一)C、(牛客练习赛41 F)简单数学题(数论 + FWT)(3.5)

    繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...

  5. 牛客练习赛34 E little w and Digital Root(数位dp)

    title: 牛客练习赛34 E little w and Digital Root(数位dp) date: 2018-12-17 22:38:37 tags: 数位dp categories:ACM ...

  6. 牛客练习赛34 - C little w and Segment Coverage(思维、树状数组)

    title: 牛客练习赛34 - C little w and Segment Coverage(思维.树状数组) date: 2018-12-15 16:36:55 tags: [树状数组,思维] ...

  7. 牛客练习赛52 | C | [烹饪] (DP,裴蜀定理,gcd)

    牛客练习赛52 C 烹饪 链接:https://ac.nowcoder.com/acm/contest/1084/C来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 327 ...

  8. 牛客练习赛73 D 离别(线段树+右端点排序离线查询)

    牛客练习赛73 D 离别 思路: 对于每一个固定的右端点i,我们都找到一个区间(l,r)使得区间中的点为左端点时 里面最大的的种数为k. 这个可以用队列或者vector来维护. 然后我们对于q个查询, ...

  9. 牛客练习赛75 D 减数游戏(队列优化(需要取模的)堆)

    牛客练习赛75 D 减数游戏 思路:写一下式子可以发每次选择最小的两个数进行操作,最后得到的答案会是最大的,那我们可以将它放进一个最小堆中来维护,但是里面的数是需要取模的,当它取模的时候,将会变小.那 ...

最新文章

  1. python 封装_python接口自动化学习笔记(封装方法用于读取excel)
  2. 在网页中显示数字时钟
  3. 动手敲10行代码读懂Python
  4. 11年标致307多少钱_11优布劳幼兽红西柚精酿啤酒多少钱一瓶?
  5. [SpringBoot2]Thymeleaf
  6. 将单词的首字母改为大写
  7. IntelliJ IDEA汉化版jar包
  8. 服务器显示不明用户远程过,服务器显示不明用户远程过
  9. 【面试】基于二叉树层次遍历相关问题的求解
  10. 汤姆·克鲁斯 - 电影全集
  11. 海康威视摄像头网线连接笔记本电脑,客户端提示:1连接设备失败。设备不在线或网络原因引起的连接超时等。(HCNetSDK.dll[7].)解决方案
  12. 如何下载Django 离线文档?
  13. 实话实说 瞧瞧医疗系统集成这些个事儿
  14. Android启动优化--异步优化
  15. bit,byte,b,B,KB的整理
  16. 如何在WPS中给一组字母上方添加一个横线
  17. 炫酷!从未见过如此Q弹的Switcher
  18. 51单片机LCD1602显示电子时钟 带按键设置和星期显示
  19. Android应用接入微信开放平台
  20. java + ffmped + mencoder搭建视频处理平台

热门文章

  1. 【Zuul2】网关Zuul控制台DashBoard
  2. vr全景制作常用的app有哪些,vr全景拍摄真的难吗?
  3. 【大话云原生】kubernetes灰度发布篇-从步行到坐缆车的自动化服务升级
  4. Atlas:揭秘全球最先进的机器人,超越想象的未来之旅!
  5. SQL54 查找排除当前最大、最小salary之后的员工的平均工资avg_salary
  6. 面部吸脂手术会反弹吗?面部吸脂会不会导致皮肤松弛
  7. Linux面试题及答案,适合毕业生和小白,适合查缺补漏
  8. 考研失利后,我学了四个月
  9. 一个妹子写给程序员男友的情书
  10. java如何实现红包雨,小程序红包雨的实现示例