1864: [Zjoi2006]三色二叉树

Time Limit: 1 Sec  Memory Limit: 64 MB
Submit: 659  Solved: 469
[Submit][Status][Discuss]

Description

Input

仅有一行,不超过500000个字符,表示一个二叉树序列。

Output

输出文件也只有一行,包含两个数,依次表示最多和最少有多少个点能够被染成绿色。

Sample Input

1122002010

Sample Output

5 2

HINT

Source

Day1

Solution

傻逼题,树形DP

$f[x][0/1]$表示节点$x$是否绿色的最大值,$g[x][0/1]$表示最小值

$f[x][0]=f[son[x][0]][1]+f[son[x][1]][1]+1$

$f[x][1]=max(f[son[x][0]][0]+f[son[x][1]][1],f[son[x][0]][1]+f[son[x][1]][0])$

$g[x][0]=g[son[x][0]][1]+g[son[x][1]][1]+1$

$g[x][1]=min(g[son[x][0]][0]+g[son[x][1]][1],g[son[x][0]][1]+g[son[x][1]][0])$

一开始以为序列转树略麻烦于是手画两组,发现弱智转换....然后这题就是5min1A系列了

Code

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
#define maxn 500010
int son[maxn][],sz=,f[maxn][],g[maxn][];
void BuildTree(int x)
{
int now=getchar();
if (now>'' || now<'' || now==) return;
if (now=='') son[x][]=++sz,BuildTree(son[x][]);
if (now=='')
son[x][]=++sz,BuildTree(son[x][]),
son[x][]=++sz,BuildTree(son[x][]);
}
void DPmax(int x)
{
if (x==) return;
DPmax(son[x][]),DPmax(son[x][]);
f[x][]=f[son[x][]][]+f[son[x][]][]+;
f[x][]=max(f[son[x][]][]+f[son[x][]][],f[son[x][]][]+f[son[x][]][]);
}
void DPmin(int x)
{
if (x==) return;
DPmin(son[x][]),DPmin(son[x][]);
g[x][]=g[son[x][]][]+g[son[x][]][]+;
g[x][]=min(g[son[x][]][]+g[son[x][]][],g[son[x][]][]+g[son[x][]][]);
}
int main()
{
BuildTree();
DPmax(); DPmin();
printf("%d %d\n",max(f[][],f[][]),min(g[][],g[][]));
return ;
}

【BZOJ-1864】三色二叉树 树形DP的更多相关文章

  1. BZOJ 1864: [Zjoi2006]三色二叉树( 树形dp )

    难得的ZJOI水题...DFS一遍就行了... ----------------------------------------------------------------------- #inc ...

  2. 【BZOJ1864】[Zjoi2006]三色二叉树 树形DP

    1864: [Zjoi2006]三色二叉树 Description Input 仅有一行,不超过500000个字符,表示一个二叉树序列. Output 输出文件也只有一行,包含两个数,依次表示最多和最 ...

  3. BZOJ1864[ZJOI2006]三色二叉树[树形DP]

    1864: [Zjoi2006]三色二叉树 Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 773  Solved: 548[Submit][Status] ...

  4. 三色二叉树——树形dp

    三色二叉树 题目描述 一棵二叉树可以按照如下规则表示成一个由 \(0.1.2\) 组成的字符序列,我们称之为"二叉树序列 \(S\) ": \(0\) 该树没有子节点. \(1S_ ...

  5. 洛谷 P2585 [ ZJOI 2006 ] 三色二叉树 —— 树形DP

    题目:https://www.luogu.org/problemnew/show/P2585 首先,三色其实记录两种状态:是绿色,不是绿色 即可,因为红蓝可以随意取反: 一开始因为懒得还原出树,所以写 ...

  6. bzoj 1864 三色二叉树

    Written with StackEdit. Description Input 仅有一行,不超过\(5*10^5\)个字符,表示一个二叉树序列. Output 输出文件也只有一行,包含两个数,依次 ...

  7. [luogu2585 ZJOI2006] 三色二叉树 (树形dp)

    传送门 Description Input 输入文件名:TRO.IN 输入文件仅有一行,不超过500000个字符,表示一个二叉树序列. Output 输出文件名:TRO.OUT 输出文件也只有一行,包 ...

  8. BZOJ 1864: [Zjoi2006]三色二叉树 树形DP + 读入

    Description Input 仅有一行,不超过500000个字符,表示一个二叉树序列. Output 输出文件也只有一行,包含两个数,依次表示最多和最少有多少个点能够被染成绿色. 题解:本题大水 ...

  9. BZOJ 1864 三色二叉树 - 树型dp

    传送门 题目大意: 给一颗二叉树染色红绿蓝,父亲和儿子颜色必须不同,两个儿子颜色必须不同,问最多和最少能染多少个绿色的. 题目分析: 裸的树型dp:\(dp[u][col][type]\)表示u节点染 ...

随机推荐

  1. P3369 【模板】普通平衡树(Treap/SBT)

    题目描述 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作: 插入x数 删除x数(若有多个相同的数,因只删除一个) 查询x数的排名(若有多个相同的数,因输出最小的排名) 查询 ...

  2. Linux shell运算符

    双引号 --使用双引号可以引用除了字符$,`(单反号),\(反斜杠)外的任意字符或者字符串 --echo "参数的个数是$#" 单引号 --单引号与双引号类似,不同的是shell会 ...

  3. codevs 2651 孔子教学——同桌

    2651 孔子教学--同桌 题目描述 Description 孔子是我国古代著名的教育家.他有先见之明,可以判断学生出师以后给他带来的声望.声望共有三种"G""M&quo ...

  4. node基础02:第一个node程序

    1.第一个web服务器 var http = require("http"); http.createServer(function(request, response){ res ...

  5. 利用ganymed-ssh2远程执行其它Linux机器上的shell命令

    实际应用中,有时候需要从web管理界面上,远程去启动其它linux主机上的程序,利用ssh协议可以方便的满足这一需求.事实上hadoop架构中,从nn上启动dn时,就是利用了免密码ssh登录.gany ...

  6. 图片加载框架Picasso解析

    picasso是Square公司开源的一个Android图形缓存库 主要有以下一些特性: 在adapter中回收和取消当前的下载: 使用最少的内存完成复杂的图形转换操作: 自动的内存和硬盘缓存: 图形 ...

  7. opencv6.2-imgproc图像处理模块之图像尺寸上的操作及阈值

    接opencv6.1-imgproc图像处理模块之平滑和形态学操作,顺带说一句在opencv中的in-place操作就是比如函数的输入图像和输出图像两个指针是相同的,那么就是in-place操作了.比 ...

  8. java并发:同步容器&并发容器

    第一节 同步容器.并发容器 1.简述同步容器与并发容器 在Java并发编程中,经常听到同步容器.并发容器之说,那什么是同步容器与并发容器呢?同步容器可以简单地理解为通过synchronized来实现同 ...

  9. windows部署React-Native的开发环境实践(技术细节)

    前情摘要 众所周知,有人说.net可以用Xamrian,呵呵,不习惯收费的好么?搞.Net的人设置一次java的环境变量,可能都觉得实在太麻烦了,可能是因为这些年微软确实把我们给带坏了,所有东西一键安 ...

  10. Python【map、reduce、filter】内置函数使用说明(转载)

    转自:http://www.blogjava.net/vagasnail/articles/301140.html?opt=admin 介绍下Python 中 map,reduce,和filter 内 ...