1864. [ZJOI2006]三色二叉树【树形DP】
Description

Input
仅有一行,不超过500000个字符,表示一个二叉树序列。
Output
输出文件也只有一行,包含两个数,依次表示最多和最少有多少个点能够被染成绿色。
Sample Input
Sample Output
5 2
f[x][1\2\3]代表x点染红绿蓝色的最多有多少个点染成绿色
g[x][1\2\3]代表最少
#include<iostream>
#include<cstring>
#include<cstdio>
#define N (1000000+100)
using namespace std;
char st[N];
int Father[N],Son[N][];
int a[N],maxn;
int f[N][],g[N][]; void Build(int x,int fa)
{
maxn=max(maxn,x);
Father[x]=fa;
if (!Son[fa][]) Son[fa][]=x;
else Son[fa][]=x;
if (a[x]>=) Build(x+,x);
if (a[x]==) Build(maxn+,x);
} void Dp(int x)
{
f[x][]=;f[x][]=;f[x][]=;
g[x][]=;g[x][]=;g[x][]=;
if (Son[x][]) Dp(Son[x][]);
if (Son[x][]) Dp(Son[x][]);
f[x][]+=max( f[Son[x][]][]+f[Son[x][]][] , f[Son[x][]][]+f[Son[x][]][] );
f[x][]+=max( f[Son[x][]][]+f[Son[x][]][] , f[Son[x][]][]+f[Son[x][]][] );
f[x][]+=max( f[Son[x][]][]+f[Son[x][]][] , f[Son[x][]][]+f[Son[x][]][] ); g[x][]+=min( g[Son[x][]][]+g[Son[x][]][] , g[Son[x][]][]+g[Son[x][]][] );
g[x][]+=min( g[Son[x][]][]+g[Son[x][]][] , g[Son[x][]][]+g[Son[x][]][] );
g[x][]+=min( g[Son[x][]][]+g[Son[x][]][] , g[Son[x][]][]+g[Son[x][]][] );
} int main()
{
scanf("%s",st);
for (int i=;i<=strlen(st)-;++i)
a[i+]=st[i]-'';
Build(,);
Son[][]=Son[][]=;
Dp();
printf("%d ",max(max(f[][],f[][]),f[][]));
printf("%d",min(min(g[][],g[][]),g[][]));
}
1864. [ZJOI2006]三色二叉树【树形DP】的更多相关文章
- BZOJ 1864: [Zjoi2006]三色二叉树( 树形dp )
难得的ZJOI水题...DFS一遍就行了... ----------------------------------------------------------------------- #inc ...
- BZOJ 1864: [Zjoi2006]三色二叉树 树形DP + 读入
Description Input 仅有一行,不超过500000个字符,表示一个二叉树序列. Output 输出文件也只有一行,包含两个数,依次表示最多和最少有多少个点能够被染成绿色. 题解:本题大水 ...
- 【BZOJ1864】[Zjoi2006]三色二叉树 树形DP
1864: [Zjoi2006]三色二叉树 Description Input 仅有一行,不超过500000个字符,表示一个二叉树序列. Output 输出文件也只有一行,包含两个数,依次表示最多和最 ...
- BZOJ1864[ZJOI2006]三色二叉树[树形DP]
1864: [Zjoi2006]三色二叉树 Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 773 Solved: 548[Submit][Status] ...
- [luogu2585 ZJOI2006] 三色二叉树 (树形dp)
传送门 Description Input 输入文件名:TRO.IN 输入文件仅有一行,不超过500000个字符,表示一个二叉树序列. Output 输出文件名:TRO.OUT 输出文件也只有一行,包 ...
- 洛谷 2585 [ZJOI2006]三色二叉树——树形dp
题目:https://www.luogu.org/problemnew/show/P2585 可以把不是绿色的记成一种.仔细一想不会有冲突.如果自己是绿色,孩子的不同颜色不会冲突:如果自己不是绿色,自 ...
- 【BZOJ-1864】三色二叉树 树形DP
1864: [Zjoi2006]三色二叉树 Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 659 Solved: 469[Submit][Status] ...
- 【BZOJ】1864: [Zjoi2006]三色二叉树
1864: [Zjoi2006]三色二叉树 Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 1295 Solved: 961[Submit][Status ...
- 1864: [Zjoi2006]三色二叉树
1864: [Zjoi2006]三色二叉树 链接 分析: 做得最智障的一题了... 首先中间输出两个数之间没空格(换行居然也过了...), 写了dp[i][0/1/2],后来知道其实dp[i][0/1 ...
- 三色二叉树——树形dp
三色二叉树 题目描述 一棵二叉树可以按照如下规则表示成一个由 \(0.1.2\) 组成的字符序列,我们称之为"二叉树序列 \(S\) ": \(0\) 该树没有子节点. \(1S_ ...
随机推荐
- COM线程模型的行为
原文:https://msdn.microsoft.com/library/ms809971.aspx Behavior of the COM Threading Models COM线程模型的行为 ...
- template-web.js 真分页绑定表格
<div class="layui-table-box"> <div class="layui-tabl ...
- [javaSE] 类型转换(1加1等于几)
打印 ‘a’+1,输出98,解释:’a’是char类型占2个8bit,1是int类型占4个,’a’字符会被自动强制转换为int类型对应ascii码表97 打印’1’+1,输出 50,解释:’1’是ch ...
- MyEclipse中更改JRE环境
今天代码中需要用到λ表达式,但λ表达式需要JRE1.8的支持,而MyEclipse设置的默认JRE是1.7.为了是程序能够顺利通过编译,需要将MyEclipse的JRE由1.7转换为1.8.步骤如下:
- Android全屏的两种方法
在开发中我们经常需要把我们的应用设置为全屏,这里我所知道的有俩中方法,一中是在代码中设置,另一种方法是在配置文件里改! 一.在代码中设置: [java] view plain copy package ...
- 线程5--GCD简介
/******************************************************/ 同步函数 (1)并发队列:不会开线程 (2)串行队列:不会开线程 异步函数 ...
- 零基础学C#算法(零基础学算法——C#版)
今天本人正在看算法方面的书.作为高中数学忘得差不多的渣渣,实在无力.无奈找了本书,c语言写的,哎.我就把其中代码翻译成C#版好了.此坑能否填平,看我耐性和网络支持条件吧.有生之年能看完的话我会把整个项 ...
- css3 3d正反面翻转
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- AE三维点击查询(3D Identify)的实现(转)
AE三维点击查询(3D Identify)的实现,类似ArcGIS的Identify对话框/////////////////////////////////////////////////////// ...
- 原生爬虫小Demo
import re from urllib import request class Spider(): url = 'https://www.panda.tv/cate/lol' #[\s\S]匹配 ...