神TM的红黑树,其实本质上应该还是一种树dp的问题……

一开始想了一个比较裸的树dp,后来发现还有更强的做法。

每个前端黑节点是看作一个物品,然后这就是很典型的树形dp的问题。

不过可以这么考虑,考虑怎么缩小问题的范围。

我们可以把黑色节点的连通块缩成一个点,这样的话就要考虑三个情况:

  1. 直接合并两个相邻的黑色节点
  2. 将三个黑节点合并为一红一黑
  3. 将四个黑节点合并为两红一黑

所以直接贪心就能做。

#include<bits/stdc++.h>
using namespace std;
int n,m,ans;
inline int read(){
int f=,x=;char ch;
do{ch=getchar();if(ch=='-')f=-;}while(ch<''||ch>'');
do{x=x*+ch-'';ch=getchar();}while(ch>=''&&ch<='');
return f*x;
}
int main(){
n=read();m=n+;
while(m>){if(m&)ans++;m>>=;}
printf("%d\n",ans);
m=n+;ans=;
while(m>){
if(m==)ans++;
if((m&)==)ans+=(m>>)*-,m>>=,m++;
else if((m&)==)ans+=(m>>)*,m>>=,m++;
else if((m&)==)ans+=(m>>)*+,m>>=,m++;
else if(!(m&))ans+=(m>>)*,m>>=;
}
printf("%d\n",ans);
}

最新文章

  1. 我与solr(二)--导入mysql数据库
  2. BZOJ-1227 虔诚的墓主人 树状数组+离散化+组合数学
  3. linux服务之git
  4. 如何在VC++ 中调试MEX文件
  5. php实现多表(四表)连接
  6. 常用的免费Webservice接口
  7. C# 面向对象基础&amp;封装&amp;继承&amp;多态&amp;加深一下冒泡排序写法
  8. 【福大软工】 W班级总成绩排名2
  9. Centos7 nginx报错403 forbidden
  10. Oracle12c Data Guard搭建手册
  11. Java集合框架之一:ArrayList源码分析
  12. Confluence 6 如何保持我空间的整洁
  13. U3D学习002——编辑器使用
  14. Spring通过注解配置Bean
  15. 吴裕雄 实战PYTHON编程(7)
  16. python汉字转拼音
  17. 【HASPDOG】hasp_update参数f和i区别
  18. 访问者模式讨论篇:java的动态绑定与双分派
  19. DataGridViewComboBoxColumn值无效解决方法
  20. BZOJ3811 玛里苟斯(线性基+概率期望)

热门文章

  1. Python 异步编程笔记:asyncio
  2. DFS(4)——hdu1010Tempter of the Bone
  3. java script 学习
  4. Mac下离线安装SDK
  5. tomcat 启动报错 解决办法 A child container failed during
  6. HighCharts中几种tooltip的显示格式
  7. feof问题
  8. SQL Server 使用分区函数实现查询优化
  9. java实现分页功能的类
  10. ES mapping的写入与查看