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 ...
随机推荐
- jquery easyui控件事件监听委托给jquery事件监听,keyup取最新值问题
<div id="<?php echo NS; ?>toolbar"> <div style="padding:5px"> ...
- (转)原理到实现 | K8S 存储之 NFS
转:https://mp.weixin.qq.com/s/Mrr1Rnl_594Gyyn9fHekjw 1NFS介绍 NFS是Network File System的简写,即网络文件系统,NFS是Fr ...
- openlayers筛选图层
很多时候需要筛选图层,例如选择交互(ol.interaction.Select). 图片来自官方:https://openlayers.org/en/v4.6.5/apidoc/ol.interact ...
- TNS-12535
Fatal NI connect error 12170. VERSION INFORMATION: TNS for Linux: Version 11.2.0.3.0 - Production Or ...
- 测开之路七十七:shell之if、case、for、while
选择语句(if语句) 大于:-gt判断目录是否存在:-d if [ 判断条件 ]; then statement1 Statement2elif [ 判断条件 ]; then statement1 S ...
- win10 文件管理器频繁卡死
参考: https://www.xitmi.com/1589.html
- Unity3D架构之PureMVC
之前了解过UI实现框架大多是用MVC架构的,才听说有这么一个基于MVC的跨平台开源框架叫PureMVC,前几天用到了做了一下,写一写分析总结官网位置:http://puremvc.org/ PureM ...
- Bootstrap 学习笔记5 进度条媒体对象和well组件
代码: <ul class="media-list"> <li class="media"> <div class="m ...
- C语言readdir()函数:读取目录函数
相关函数:open, opendir, closedir, rewinddir, seekdir, telldir, scandir 头文件:#include <sys/types.h> ...
- Picture【HDU - 1828】【扫描线】
题目链接 这道题求的是这些可能存在重叠的小方块可能构成的合成方块的周长的值是多少,有简单却会很复杂的做法就是去跑纵向和横向两次的扫描线,求得最后的两个周长和,但是这样的做法未免显得复杂了,我们完全可以 ...