【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 ...
随机推荐
- AtCoder ARC 090 E / AtCoder 3883: Avoiding Collision
题目传送门:ARC090E. 题意简述: 给定一张有 \(N\) 个点 \(M\) 条边的无向图.每条边有相应的边权,边权是正整数. 小 A 要从结点 \(S\) 走到结点 \(T\) ,而小 B 则 ...
- 【bzoj题解】题解传送门
如题,题解传送门: 1001 1008 1012
- MySQL 5.7.17 Group Relication(组复制)搭建手册【转】
本博文介绍了Group Replication的两种工作模式的架构.并详细介绍了Single-Master Mode的部署过程,以及如何切换到Multi-Master Mode.当然,文末给出了Gro ...
- python并发爬虫利器tomorrow(一)
tomorrow是我最近在用的一个爬虫利器,该模块属于第三方的一个模块,使用起来非常的方便,只需要用其中的threads方法作为装饰器去修饰一个普通的函数,既可以达到并发的效果,本篇将用实例来展示to ...
- Java项目打war包的方法
我们可以运用DOS命令来手工打war包: 首先,打开DOS命令行,敲入“jar”,我们发现它提示不是内部或外部的命令这样的错误,这时八成是你的JAVA环境没有配置好,我们可以用JAVA_HOME方式或 ...
- java 闭包与回调
闭包(closure)是一个可调用的对象,它记录了一些信息,这些信息来自于创建它的作用域. 内部类是面向对象的闭包,因为它不仅包含外围类对象(创建内部类的作用域)的信息,还自动拥有一个指向此外围类对象 ...
- 使用Oracle数据库,对某个表频繁更新
使用Oracle数据库,对某个表频繁更新,查询时要联合这张表,查询速度非常慢,有什么解决办法? 一般的pc机oracle更新的效率均可达到500+/s, 可能的问题,你更新这个不会是每次都新建jdbc ...
- GrideVlew提供点击按钮添加新数据,单击项目修改,长按删除功能
package com.example.wang.myapplication; import android.app.AlertDialog; import android.content.Dialo ...
- 1975: [Sdoi2010]魔法猪学院
k短路,只会写A*的飘过..priority_queue超空间差评!
- window服务器上搭建git服务,window server git!!!
先给大家看一个高大上的,这是我给我公司配置的,小伙伴们都说好! 阿里云的2012server 基于这篇大神的教程,我把服务端搭建好了. 传送门,当然我还是自己做个笔记的好. 1.下载java,并安装 ...