【bzoj3227】红黑树
2024-09-28 04:48:14
神TM的红黑树,其实本质上应该还是一种树dp的问题……
一开始想了一个比较裸的树dp,后来发现还有更强的做法。
每个前端黑节点是看作一个物品,然后这就是很典型的树形dp的问题。
不过可以这么考虑,考虑怎么缩小问题的范围。
我们可以把黑色节点的连通块缩成一个点,这样的话就要考虑三个情况:
- 直接合并两个相邻的黑色节点
- 将三个黑节点合并为一红一黑
- 将四个黑节点合并为两红一黑
所以直接贪心就能做。
#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);
}
最新文章
- 我与solr(二)--导入mysql数据库
- BZOJ-1227 虔诚的墓主人 树状数组+离散化+组合数学
- linux服务之git
- 如何在VC++ 中调试MEX文件
- php实现多表(四表)连接
- 常用的免费Webservice接口
- C# 面向对象基础&;封装&;继承&;多态&;加深一下冒泡排序写法
- 【福大软工】 W班级总成绩排名2
- Centos7 nginx报错403 forbidden
- Oracle12c Data Guard搭建手册
- Java集合框架之一:ArrayList源码分析
- Confluence 6 如何保持我空间的整洁
- U3D学习002——编辑器使用
- Spring通过注解配置Bean
- 吴裕雄 实战PYTHON编程(7)
- python汉字转拼音
- 【HASPDOG】hasp_update参数f和i区别
- 访问者模式讨论篇:java的动态绑定与双分派
- DataGridViewComboBoxColumn值无效解决方法
- BZOJ3811 玛里苟斯(线性基+概率期望)