Time Limit: 10 Sec  Memory Limit: 128 MB
Submit: 204  Solved: 125

Description

  红黑树是一类特殊的二叉搜索树,其中每个结点被染成红色或黑色。若将二叉搜索树结点中的空指针看作是指向一个空结点,则称这类空结点为二叉搜索树的前端结点。并规定所有前端结点的高度为-1。
  一棵红黑树是满足下面“红黑性质”的染色二叉搜索树:
  (1) 每个结点被染成红色或黑色;
  (2) 每个前端结点为黑色结点;
  (3) 任一红结点的子结点均为黑结点;
  (4) 在从任一结点到其子孙前端结点的所有路径上具有相同的黑结点数。
  从红黑树中任一结点x出发(不包括结点x),到达一个前端结点的任意一条路径上的黑结点个数称为结点x的黑高度,记作bh(x)。红黑树的黑高度定义为其根结点的黑高度。
  给定正整数N,试设计一个算法,计算出在所有含有N个结点的红黑树中,红色内结点个数的最小值和最大值。
 

Input

  输入共一个数N。
 

Output

 
  输出共两行。
  第一行为红色内结点个数的最小值,第二行为最大值。
 

Sample Input

8

Sample Output

1
4

HINT

对于 100% 的数据,1≤N≤5000

Source

名叫红黑树的DP题……

让我想起了之前的名叫最大流的树剖题2333

动规/贪心

脑补了一阵子,觉得是树规或者区间DP,然而都好麻烦

这时旁边神奇的licone说可以贪心 http://blog.csdn.net/senyelicone/article/details/59058778

-----

如果树形DP的话,设f[非前端结点数][黑高度][当前结点是红色/黑色]=最大/最小红结点数

如果区间DP的话,设f[左端点][右端点][当前结点状态]=最大/最小红结点数  ←只是一个想法,目测就算正确也T得飞起

-----

 /*by SilverN*/
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<vector>
using namespace std;
int main(){
int i,j,n,m;
scanf("%d",&n);
m=n+;
int ans=;
while(m>){
if(m&)ans++;
m>>=;
}
printf("%d\n",ans);//mini
m=n+;
ans=;
while(m>){
if(m==)ans++;
if(m&){
if((m&)==){
ans+=m/*-;
m/=;m++;
}
else if((m&)==){
ans+=m/*;
m/=;m++;
}
else if((m&)==){
ans+=m/*+;
m/=;m++;
}
}
else{
ans+=m/*;
m/=;
}
}
printf("%d\n",ans);//max
return ;
}

最新文章

  1. Git简易的命令行入门教程
  2. python批量GBK转UTF-8
  3. ActiveMQ(5.10.0) - Spring Support
  4. 如何调试什么时候SaveFileDialog会被Dispose
  5. C51汇编语言完整源码
  6. android怎样写一个循环文字滚动的TextView
  7. Linux学习之traceroute命令
  8. jxl读写excel, poi读写excel,word, 读取Excel数据到MySQL
  9. apache .htaccess文件详解和配置技巧总结
  10. syntaxhighlighter的使用
  11. 利用工具MailUtils实现邮件的发送,遇到的大坑,高能预警!!
  12. dedecms文章页调用上一篇和下一篇文章
  13. R学习笔记:了解R的使用
  14. HtmlUnit入门一
  15. PCIE错误分析
  16. Codeforces Round #419 Div. 1
  17. BZOJ4695 最假女选手(势能线段树)
  18. 深挖android low memory killer
  19. 解决VMware虚拟机的CentOS无法上网
  20. POJ1995:Raising Modulo Numbers(快速幂取余)

热门文章

  1. JavaScript中的match方法和search方法
  2. MySql学习笔记01
  3. sql 参数化查询
  4. pymysql模块操作数据库及连接报错解决方法
  5. Tame Me【驯服我】
  6. vector函数用法
  7. 按位与&amp;、或|、异或^等运算方法
  8. ipv4配置
  9. TCP/IP网络编程之多线程服务端的实现(一)
  10. border-color与color