【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 ...
随机推荐
- SolrJ案例实现搭建环境——(十五)
案例
- springboot集成mybatis环境搭建以及实现快速开发微服务商品模块基本的增删改查!
之前学习了springboot和mybatis3的一些新特性,初步体会了springboot的强大(真的好快,,,,,),最近趁着复习,参考着以前学习的教程,动手写了一个springboot实战的小例 ...
- Linux嵌入式交叉编译环境 的搭建【转】
转自:http://blog.csdn.net/woaixiaozhe/article/details/7395435 1. 安装标准的C开发环境,由于Linux安装默认是不安装的,所以需要先安装一下 ...
- 从一个局长使用BS系统的无奈看测试点
今天我点名买了个B/S系统,听说只要有浏览器就能用.我最讨厌装客户端了,用浏览器就是方便啊. 下面就是我使用这个系统碰到的麻烦事: 我登录失败的时候没有任何提示,这没什么,反正提示也只是说失败…… 进 ...
- thinkphp5 IIS7.5 隐藏index.php的方法
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.we ...
- JMeter接口&性能测试
JMeter接口测试 目前最新版本发展到5.0版本,需要Java7以上版本环境,下载解压目录后,进入\apache-jmeter-5.0\bin\,双击ApacheJMeter.jar文件启动JMem ...
- 压力测试随笔之:JMeter,LoadRunner 相得益彰
做压力测试,我喜欢先写 JMeter 脚本,功能测通以后再翻译成 LoadRunner 脚本,最后用 LoadRunner 完成压测.也许我是 Java 出身吧,对 JMeter 总是有一种亲切感用着 ...
- 向SQL Server 现有表中添加新列并添加描述.
注: sql server 2005 及以上支持. 版本估计是不支持(工作环境2005,2008). 工作需要, 需要向SQL Server 现有表中添加新列并添加描述. 从而有个如下存储过程. (先 ...
- Git简明教程一、基本概念
文本是写给新手的Git入门教程.本文的目的是让新手能够快速了解并开始使用Git,因此只会介绍最基本.同时也是最核心的知识.其中包括使用Git的基本步骤和Git中最常用的命令,以及如何使用GitHub托 ...
- Linux学习笔记:wc查看文件字节数、字数、行数
Linux系统中的wc(Word Count)命令可以统计指定文件中的字节数.字数.行数,并将统计结果显示输出. 若不指定文件名称,或是所给予的文件名为“-”,则wc指令会从标准输入设备读取数据. 语 ...