Description

Input

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

Output

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

Sample Input

1122002010

Sample Output

5 2

HINT

 

Source

 

题解

这道题我们考虑dp

我们先把树给构造出来(可以用栈,也可以用dfs)

建完树后,我们用f[i][0/1/2][0]表示i节点填绿/蓝/红色的最小答案,f[i][0/1/2][1]表示i节点填绿/蓝/红色的最大答案

我们考虑i节点从两个儿子转移

f[i][0][0]=min(f[s1][1][0]+f[s2][2][0],f[s1][2][0]+f[s2][1][0])

f[i][1][0]=min(f[s1][0][0]+f[s2][2][0],f[s1][2][0]+f[s2][0][0])

f[i][2][0]=min(f[s1][0][0]+f[s2][1][0],f[s1][1][0]+f[s2][0][0])

f[i][0/1/2][1]转移同理

 #include<bits/stdc++.h>
#define N 500005
using namespace std;
int tot,top;
int Stack[N];
int f[N][][];
char s[N];
int main(){
scanf("%s",s+);
int len=strlen(s+);
for (int i=len;i>=;i--)
if (s[i]==''){
int x=Stack[top],y=Stack[--top];
tot++;
f[tot][][]=min(f[x][][]+f[y][][],f[x][][]+f[y][][])+;
f[tot][][]=min(f[x][][]+f[y][][],f[x][][]+f[y][][]);
f[tot][][]=min(f[x][][]+f[y][][],f[x][][]+f[y][][]);
f[tot][][]=max(f[x][][]+f[y][][],f[x][][]+f[y][][])+;
f[tot][][]=max(f[x][][]+f[y][][],f[x][][]+f[y][][]);
f[tot][][]=max(f[x][][]+f[y][][],f[x][][]+f[y][][]);
Stack[top]=tot;
} else
if (s[i]==''){
int x=Stack[top];
tot++;
f[tot][][]=min(f[x][][],f[x][][])+;
f[tot][][]=min(f[x][][],f[x][][]);
f[tot][][]=min(f[x][][],f[x][][]);
f[tot][][]=max(f[x][][],f[x][][])+;
f[tot][][]=max(f[x][][],f[x][][]);
f[tot][][]=max(f[x][][],f[x][][]);
Stack[top]=tot;
} else{
tot++;
f[tot][][]=f[tot][][]=;
Stack[++top]=tot;
}
int Max=max(f[tot][][],max(f[tot][][],f[tot][][]));
int Min=min(f[tot][][],min(f[tot][][],f[tot][][]));
printf("%d %d",Max,Min);
return ;
}

最新文章

  1. Oracle 11g RAC停止和启动步骤
  2. 井间数据polarization analysis 相关概念
  3. LightOJ1064 Throwing Dice(DP)
  4. mysql时间类型在iBATIS框架下的问题(原创哦)
  5. express中ejs模板引擎
  6. Firefly 配置说明
  7. btrace 笔记
  8. Device Mapper Multipath(DM-Multipath)
  9. 设计模式 ( 十三 ) 命令模式Command(对象行为型)
  10. SQL计算年代差
  11. python学习笔记(十一)之函数
  12. Mybatis框架解析之Builder解析
  13. Mybatis篇总结
  14. JDK1.8源码(八)——java.util.HashSet 类
  15. NFS服务自动搭建及挂载脚本
  16. JustOj 1994: P1001
  17. 逆袭之旅DAY13.东软实训.Oracle.简单的查询语句.限制.排序
  18. gaea-editor 项目使用
  19. CentOS 7 firewalld vsftpd开放端口
  20. 淘宝购买的“公网IP盒子”企业版存在很多问题

热门文章

  1. Html语言,使用&lt;a&gt;标签发送电子邮件
  2. ionic2+Angular2:套接口明细步骤,以登录功能为例
  3. poj3468树状数组的区间更新,区间求和
  4. HDU-2222文字检索
  5. Java面向对象 正则表达式
  6. For in 与For of 区别
  7. php中get_headers函数的作用及用法的详细介绍
  8. MySQL锁类型以及子查询锁表问题、解锁
  9. 关于欧几里得算法(gcd)的证明
  10. LINUX 笔记-文件隐藏属性