链接:https://ac.nowcoder.com/acm/contest/368/B

题意:

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

思路:

题目不懂啥意思。看题解才知道,是可以任意选点。。。

直接按照中右左顺序遍历。

这样选点满足要求。

再LIS即可。

代码:

#include <bits/stdc++.h>
using namespace std; const int MAXN = 1e5 + 10; int W[MAXN];
int L[MAXN],R[MAXN];
int Res[MAXN],dp[MAXN];
int pos = 0; void Dfs(int x)
{
if (x == 0)
return;
Res[++pos] = x;
Dfs(R[x]);
Dfs(L[x]);
} int main()
{
int n;
cin >> n;
for (int i = 1;i <= n;i++)
cin >> W[i];
for (int i = 1;i <= n;i++)
cin >> L[i] >> R[i];
Dfs(1);
for (int i = 1;i <= n;i++)
Res[i] = W[Res[i]];
pos = 1;
dp[1] = Res[1];
for (int i = 2;i <= n;i++)
{
if (Res[i] > dp[pos])
{
dp[++pos] = Res[i];
}
else
{
int x = lower_bound(dp + 1, dp + 1 + pos, Res[i]) - dp;
dp[x] = Res[i];
}
}
cout << pos << endl; return 0;
}

  

最新文章

  1. CozyRSS开发记录0-RSS阅读器开坑
  2. html/css小练习1
  3. 安装和配置Mantis&lt;项目管理工具&gt;
  4. C#迭代重载等
  5. 《DSP using MATLAB》示例Example4.3 双边序列
  6. ios UILocalNotification的使用
  7. tiledmap2
  8. LevelDB源码之四LOG文件
  9. 精雕细琢 35 套精美的 PSD 图标素材
  10. THE ROAD TO PROGRAM
  11. A1088. Rational Arithmetic
  12. spring ,springmvc,mybatis 最基本的整合,没有多余的jar包和依赖 2018.9.29日
  13. 队列queue的一些操作
  14. 【转载】systemctl命令完全指南
  15. spring整合mybatisXML版
  16. 【原】关于AdaBoost的一些再思考
  17. MACD各分时背离所对应的时间
  18. docker安装testlink
  19. Alpha冲刺报告(6/12)(麻瓜制造者)
  20. 高精度减法用string 和 stack

热门文章

  1. [shell] Bash编程总结
  2. Redis雪崩效应以及解决方案
  3. python不同目录下的调用
  4. Jquery Plugin模版
  5. 运行swoole_server方法
  6. MySQL丨5.6版本插入中文显示问号解决方法
  7. dyld: could not load inserted library &#39;/Developer/usr/lib/libBacktraceRecording.dylib&#39; because no suitable image found. Did find:
  8. vue.js created函数注意事项
  9. C++之引用&amp;的详解
  10. bzoj2875随机数生成器——矩阵快速幂