BZOJ3227 [sdoi2008]红黑树
贪心什么的太神仙了(
老老实实dp于是就是沙茶题了
f[i][d][0/1]表示i个节点bh为d当前节点颜色白/黑【好好读题是真。。
转移一下然后就可以打表了(
由于我们发现这玩意很好卡有很好的性质(平衡树嘛)于是就优化一下转移啥的就能啊次了
memset真的是个很迷的东西。5000*5000的数组就过不了了233
读不对题郁闷死了(课内也读不对咋整啊。
//Love and Freedom.
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
#define ll long long
#define inf 20021225
#define N 5100
using namespace std;
int f[N][][],g[N][][],lg[];
int main()
{
int n;//freopen("qwq.out","w",stdout);
scanf("%d",&n);
lg[]=; for(int i=;i<;i++) lg[i]=lg[i-]<<;
memset(f,,sizeof(f));
f[][][]=;//f[1][1][1]=0;f[2][1][0]=1;
memset(g,-,sizeof(g));
g[][][]=;//g[1][1][1]=0;g[2][1][0]=1;
for(int i=;i<=n;i++) for(int d=;lg[d-]<=n+&&d<=i+;d++)
{
for(int k=(d>?(<<d-)-:);k<=i-k-;k++)
{
f[i][d][]=min(f[i][d][],f[i-k-][d][]+f[k][d][]+);
g[i][d][]=max(g[i][d][],g[i-k-][d][]+g[k][d][]+);
if(d)
f[i][d][]=min(f[i][d][],min(f[i-k-][d-][],f[i-k-][d-][])+min(f[k][d-][],f[k][d-][])),
g[i][d][]=max(g[i][d][],max(g[i-k-][d-][],g[i-k-][d-][])+max(g[k][d-][],g[k][d-][]));
}
}
int ans1=inf,ans2=;
for(int i=;lg[i-]<=n+;i++)
{
ans1=min(ans1,min(f[n][i][],f[n][i][])),
ans2=max(ans2,max(g[n][i][],g[n][i][]));
}
printf("%d\n%d\n",ans1,ans2);
return ;
}
BZOJ3227 [sdoi2008]红黑树的更多相关文章
- Bzoj3227 [Sdoi2008]红黑树(tree)
Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 204 Solved: 125 Description 红黑树是一类特殊的二叉搜索树,其中每个结点被染 ...
- BZOJ 3227: [Sdoi2008]红黑树(tree)
BZOJ 3227: [Sdoi2008]红黑树(tree) 标签(空格分隔): OI-BZOJ OI-其它 Time Limit: 10 Sec Memory Limit: 128 MB Descr ...
- BZOJ.3227.[SDOI2008]红黑树tree(树形DP 思路)
BZOJ orz MilkyWay天天做sxt! 首先可以树形DP:\(f[i][j][0/1]\)表示\(i\)个点的子树中,黑高度为\(j\),根节点为红/黑节点的最小红节点数(最大同理). 转移 ...
- 【bzoj3227】红黑树
神TM的红黑树,其实本质上应该还是一种树dp的问题…… 一开始想了一个比较裸的树dp,后来发现还有更强的做法. 每个前端黑节点是看作一个物品,然后这就是很典型的树形dp的问题. 不过可以这么考虑,考虑 ...
- BZOJ 3227 [Sdoi2008]红黑树(tree) ——贪心 动态规划
首先可以想到一个贪心的方法,然后一层一层的合并. 也可以采用动态规划的方式,为了写起来好写,把点数*2+1,然后发现在本机上跑不过1500的数据. 交上去居然A掉了. 贪心 #include < ...
- BZOJ-3227 红黑树(tree) 树形DP
个人认为比较好的(高端)树形DP,也有可能是人傻 3227: [Sdoi2008]红黑树(tree) Time Limit: 10 Sec Memory Limit: 128 MB Submit: 1 ...
- 红黑树——算法导论(15)
1. 什么是红黑树 (1) 简介 上一篇我们介绍了基本动态集合操作时间复杂度均为O(h)的二叉搜索树.但遗憾的是,只有当二叉搜索树高度较低时,这些集合操作才会较快:即当树的高度较高(甚至一种极 ...
- jdk源码分析红黑树——插入篇
红黑树是自平衡的排序树,自平衡的优点是减少遍历的节点,所以效率会高.如果是非平衡的二叉树,当顺序或逆序插入的时候,查找动作很可能会遍历n个节点 红黑树的规则很容易理解,但是维护这个规则难. 一.规则 ...
- 谈c++ pb_ds库(二) 红黑树大法好
厉害了,没想到翻翻pb_ds库看到这么多好东西,封装好的.现成的splay.红黑树.avl... 即使不能在考场上使用也可以用来对拍哦 声明/头文件 #include <ext/pb_ds/tr ...
随机推荐
- 十二 windows临界区,其他各种mutex
一.windows临界区 类似于互斥量 == 临界区. 二.多次进入临界区 进入临界区(加锁): 离开临界区(解锁): 同一个线程中windows中相同临界区变量代表的临界区进入(entercirti ...
- Arithmetic Sequence
Arithmetic Sequence Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Othe ...
- BUUCTF | [De1CTF 2019]SSRF Me
解法一字符串拼接: 1.得到签名sign http://8fa4531c-1164-49b7-a700-70e77e6aacb7.node3.buuoj.cn/geneSign?param=flag. ...
- [CSP-S模拟测试110]题解
也许是最后一篇了. A.最大或 不错的签到题. 对于二进制位来说,高位的一个1比低位的所有1的贡献总和还要大. 显然,$r$必选,因为$r$中所有1的相对考前.那么考虑如何构造另一个数. 首先$l$和 ...
- mui初级入门教程(一)— 小白入手mui的学习路线
文章来源:小青年原创发布时间:2016-05-15关键词:mui,html5+转载需标注本文原始地址:http://zhaomenghuan.github.io/#!/blog/20160515 写在 ...
- ES命令
基础概念 Elasticsearch有几个核心概念.从一开始理解这些概念会对整个学习过程有莫大的帮助. 接近实时(NRT) Elasticsearch是一个接近实时的搜索平台.这意味 ...
- Vagrant 手册之 Vagrantfile - 机器设置 config.vm
原文地址 配置的命名空间:config.vm config.vm 中的设置修改 Vagrant 管理的机器的配置. 1. 可用的设置项 config.vm.boot_timeout Vagrant 等 ...
- 文件上传: FileItem类、ServletFileUpload 类、DiskFileItemFactory类
文件上传: ServletFileUpload负责处理上传的文件数据,并将表单中每个输入项封装成一个FileItem对象中, 在使用ServletFileUpload对象解析请求时需要根据DiskFi ...
- 线程池之ThreadPoolExecutor源码解析
1.变量 ThreadPoolExecutor先定义了这几个常量,初看时一脸懵逼,其实它就是用int的二进制高三位来表示线程池的状态, 先回顾一下位运算: <<’左移:右边空出的位置补0, ...
- 【题解】Intervals
题目大意 有\(n\)个区间(\(1 \leq n \leq 200\)),第\(i\)个区间覆盖\((a_{i}, b_{i})\)且有权值\(w_{i}\)(\(1 \leq a_{i} &l ...