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_ ...
随机推荐
- [日常] DNS的迭代查询过程
DNS是应用层协议,端口号为tcp/53和udp/53 DNS查询过程,比如访问www.test.com1.客户机查询www.test.com2.查询首选DNS服务器,Linux下/etc/resol ...
- 我用ASP.NET缓存之数据缓存
[我的理解] Cache,是内置的对象集合.是全局的,类似于static Arraylist.它是线程安全的,添加或修改Cache中的项目时,不需要锁定或者解除Cache. 添加 Cache[Key] ...
- gRPC的通讯过程
在 HTTP2 协议正式开始工作前, 如果已经知道服务器是 HTTP2 的服务器, 通讯流程如下: 客户端必须首先发送一个连接序言,其逻辑结构: PRI * HTTP/2.0\r\n\r\nSM\r\ ...
- python数据类型之简单数据类型
变量使用注意事项 慎用小写字母l和大写字母O,因为它们可能被人看成数值1和0. 应使用小写的python变量名. 字符串 在python中,用引号括起来的都是字符串,其中的引号可以是单引号和双引号. ...
- mysql安装配置、主从复制配置详解
作者:NiceCui 本文谢绝转载,如需转载需征得作者本人同意,谢谢. 本文链接:http://www.cnblogs.com/NiceCui/p/8213723.html 邮箱:moyi@moyib ...
- C#设计模式--命令模式(学习Learning hard C#设计模式笔记)
原文地址http://www.cnblogs.com/zhili/p/CommandPattern.html class Program { static void Main(string[] arg ...
- Java提供了哪些IO方式?IO, BIO, NIO, AIO是什么?
IO一直是软件开发中的核心部分之一,而随着互联网技术的提高,IO的重要性也越来越重.纵观开发界,能够巧妙运用IO,不但对于公司,而且对于开发人员都非常的重要.Java的IO机制也是一直在不断的完善,以 ...
- kubernetes学习资源
参考文章: 1.kubernetes学习资源 1. <Kubernetes与云原生应用>系列之Kubernetes的系统架构与设计理念 2.[docker专业介绍的网站dockerinfo ...
- 给model模型传数组参数
$res = $this->Company->companyDischarge($this->user_id,array(0=>'c.limit_sum>0',1=> ...
- 一文告诉你git如何使用
提供简易教程学习网址 http://www.bootcss.com/p/git-guide/ git add . //提交至缓存 git commit -m '注释' //提交至本地 (git com ...