【BZOJ】1864: [Zjoi2006]三色二叉树
1864: [Zjoi2006]三色二叉树
Time Limit: 1 Sec Memory Limit: 64 MB
Submit: 1295 Solved: 961
[Submit][Status][Discuss]
Description

Input
仅有一行,不超过500000个字符,表示一个二叉树序列。
Output
输出文件也只有一行,包含两个数,依次表示最多和最少有多少个点能够被染成绿色。
Sample Input
Sample Output
HINT
Source
其实是一道基础的树规辣~一开始觉得难点可能在建边上,可是建边也很好搞是怎么肥四??(其实就是一道水题
建了边直接dfs往上dp就可以辣!
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std; char s[];
int now, len; int dp1[][], dp2[][], son[][];
int MA, MI; int stot, tov[], nex[], h[]; void add ( int u, int v ) {
tov[++stot] = v;
nex[stot] = h[u];
h[u] = stot;
} void build ( int pos, int f ) {
add ( f, pos ); add ( pos, f );
if ( s[pos-] == '' ) {
now = pos;
return ;
}
if ( s[pos-] == '' ) {
build ( pos + , pos );
}
if ( s[pos-] == '' ) {
build ( pos + , pos );
build ( now + , pos );
}
} void dfs ( int u, int f ) {
for ( int i = h[u]; i; i = nex[i] ) {
int v = tov[i];
if ( v == f ) continue;
dfs ( v, u );
son[u][son[u][]++] = v;
}
int l = son[u][], r = son[u][];
if ( son[u][] == ) {
dp1[u][] = max ( dp1[l][], dp1[l][] );
dp1[u][] = max ( dp1[l][], dp1[l][] );
dp1[u][] = max ( dp1[l][], dp1[l][] ) + ;
dp2[u][] = min ( dp2[l][], dp2[l][] );
dp2[u][] = min ( dp2[l][], dp2[l][] );
dp2[u][] = min ( dp2[l][], dp2[l][] ) + ;
} else if ( son[u][] == ){
dp1[u][] = max ( dp1[l][] + dp1[r][], dp1[r][] + dp1[l][] );
dp1[u][] = max ( dp1[l][] + dp1[r][], dp1[r][] + dp1[l][] );
dp1[u][] = max ( dp1[l][] + dp1[r][], dp1[r][] + dp1[l][] ) + ;
dp2[u][] = min ( dp2[l][] + dp2[r][], dp2[r][] + dp2[l][] );
dp2[u][] = min ( dp2[l][] + dp2[r][], dp2[r][] + dp2[l][] );
dp2[u][] = min ( dp2[l][] + dp2[r][], dp2[r][] + dp2[l][] ) + ;
} else {
dp1[u][] = dp1[u][] = ;
dp1[u][] = ;
dp2[u][] = dp2[u][] = ;
dp2[u][] = ;
}
} int main ( ) {
cin >> s;
len = strlen ( s );
build ( , );
dfs ( , );
MA = max ( dp1[][], max ( dp1[][], dp1[][] ) );
MI = min ( dp2[][], min ( dp2[][], dp2[][] ) );
printf ( "%d %d", MA, MI );
}
【BZOJ】1864: [Zjoi2006]三色二叉树的更多相关文章
- BZOJ 1864: [Zjoi2006]三色二叉树( 树形dp )
难得的ZJOI水题...DFS一遍就行了... ----------------------------------------------------------------------- #inc ...
- BZOJ 1864: [Zjoi2006]三色二叉树 树形DP + 读入
Description Input 仅有一行,不超过500000个字符,表示一个二叉树序列. Output 输出文件也只有一行,包含两个数,依次表示最多和最少有多少个点能够被染成绿色. 题解:本题大水 ...
- 1864: [Zjoi2006]三色二叉树
1864: [Zjoi2006]三色二叉树 链接 分析: 做得最智障的一题了... 首先中间输出两个数之间没空格(换行居然也过了...), 写了dp[i][0/1/2],后来知道其实dp[i][0/1 ...
- 1864. [ZJOI2006]三色二叉树【树形DP】
Description Input 仅有一行,不超过500000个字符,表示一个二叉树序列. Output 输出文件也只有一行,包含两个数,依次表示最多和最少有多少个点能够被染成绿色. Sample ...
- bzoj千题计划212:bzoj1864: [Zjoi2006]三色二叉树
http://www.lydsy.com/JudgeOnline/problem.php?id=1864 #include<cstdio> #include<cstring> ...
- BZOJ1864[ZJOI2006]三色二叉树[树形DP]
1864: [Zjoi2006]三色二叉树 Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 773 Solved: 548[Submit][Status] ...
- 【BZOJ1864】[Zjoi2006]三色二叉树 树形DP
1864: [Zjoi2006]三色二叉树 Description Input 仅有一行,不超过500000个字符,表示一个二叉树序列. Output 输出文件也只有一行,包含两个数,依次表示最多和最 ...
- 嘴巴题5 「BZOJ1864」[ZJOI2006] 三色二叉树
1864: [Zjoi2006]三色二叉树 Time Limit: 1 Sec Memory Limit: 64 MB Submit: 1195 Solved: 882 [Submit][Status ...
- [ZJOI2006]三色二叉树
[ZJOI2006]三色二叉树 BZOJ luogu 分3种颜色讨论转移一下 #include<bits/stdc++.h> using namespace std; const int ...
随机推荐
- Css中实现一个盒子固定宽度,另一个盒子宽度自适应的方法
Css中实现一个盒子固定宽度,另一个盒子宽度自适应的方法 网上方法很多,个人认为以下两种思想是最为常用的. 一种是让第一个盒子脱离文档流,第二个盒子离左边有一定距离. 第二种方法是使用flex布局,不 ...
- MySQL参数设置
InnoDB配置 从MySQL 5.5版本开始,InnoDB就是默认的存储引擎并且它比任何其它存储引擎的使用要多得多.那也是为什么它需要小心配置的原因. 1 innodb_file_per_table ...
- C# 所生成项目的处理器架构“MSIL”与引用“Oracle.DataAccess, Version=4.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=x86”的处理器架构“x86”不匹配。这种不匹配可能会导致运行时失败。
这个问题一般都是Oracle.DataAccess的版本不兼容问题造成的. 解决办法: 1.把Oracle.DataAccess.dll文件拿到C盘或D盘的安装文件的地方进行搜索. 2.会出现在pro ...
- 31 Godoc: documenting Go code 编写良好的文档关于godoc
Godoc: documenting Go code 编写良好的文档关于godoc 31 March 2011 The Go project takes documentation seriousl ...
- 09 Command Documentation 命令文档
Command Documentation 命令文档 There is a suite of programs to build and process Go source code. Inste ...
- docker强制关闭命令
删除容器: 优雅的关闭容器:docker stop 容器id/容器名字 强制关闭容器:docker kill 容器id/容器名字 删除镜像: docker rmi 容器id/容器名字
- Ubuntu 18.04安装MongoDB 4.0(社区版)
Ubuntu 18.04(虚拟机VirtualBox上),MongoDB 4.0, 听室友说,23点有世界杯决赛呢!可是,孤要写博文的啊!以记录这忙乱的下午和晚间成功安装了一个软件到Linux上.—— ...
- 数据结构之线性表(python版)
数据结构之线性表(python版) 单链表 1.1 定义表节点 # 定义表节点 class LNode(): def __init__(self,elem,next = None): self.el ...
- Java基础82 jsp中的EL表达式(网页知识)
1.EL表达式的作用 EL表达式的作用:向浏览器输出域对象中的变量值或者表达式计算结果.语法:${变量或者表达式} 注: Jsp的核心语法:jsp的表达式<%= %>和jsp的脚本< ...
- 【CF767C】Garland
传送门啦 分析: 这个题我是看着翻译做的,感觉不是很难,很普通的一个树形dp 题目大意: 在一棵树上分离出三个子树,使这三个子树的点权和相等. 明确题目意思这个题就简单多了吧. 我们会发现每一棵子树的 ...