博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj千题计划212:bzoj1864: [Zjoi2006]三色二叉树
阅读量:6985 次
发布时间:2019-06-27

本文共 1052 字,大约阅读时间需要 3 分钟。

 

#include
#include
#include
using namespace std;#define N 500001char s[N];int root;int tr[N][2];int m;int g[N][3],f[N][3];void dfs(int &rt){ rt=++m; int tmp=s[m]-'0'; if(!tmp) return; dfs(tr[rt][0]); if(tmp>1) dfs(tr[rt][1]);}void DP(int rt){ if(!rt) return; int l=tr[rt][0],r=tr[rt][1]; DP(l); DP(r); int x,y,z; for(int i=0;i<3;++i) { x=(i+1)%3; y=(x+1)%3; z= i ? 0 : 1; g[rt][i]=max(g[l][x]+g[r][y],g[l][y]+g[r][x])+z; f[rt][i]=min(f[l][x]+f[r][y],f[l][y]+f[r][x])+z; }}int main(){ scanf("%s",s+1); dfs(root); DP(root); printf("%d ",max(g[root][0],max(g[root][1],g[root][2]))); printf("%d",min(f[root][0],max(f[root][1],f[root][2])));}

 

1864: [Zjoi2006]三色二叉树

Time Limit: 1 Sec  Memory Limit: 64 MB
Submit: 1146  Solved: 844
[][][]

Description

Input

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

Output

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

Sample Input

1122002010

Sample Output

5 2

 

转载于:https://www.cnblogs.com/TheRoadToTheGold/p/8266729.html

你可能感兴趣的文章
Hessian HTTP POST访问时,Nginx返回411问题
查看>>
Redux进阶系列2: 如何合理地设计State
查看>>
[译] 部署!=发布(第二部分)
查看>>
数据结构和算法面试题系列—C指针、数组和结构体
查看>>
iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 记录日志
查看>>
Android解析ActivityManagerService(一)AMS启动流程和AMS家族
查看>>
大前端开发者需要了解的基础编译原理和语言知识
查看>>
Exif图片方向的一些发现
查看>>
iOS关联对象
查看>>
Javascript如何实现GPU加速?
查看>>
次世代的会话管理项目 Spring Session
查看>>
SQL SERVER 2008安全配置
查看>>
Json hijacking/Json劫持漏洞
查看>>
onTouch 事件传递
查看>>
算法知识梳理(5) 数组第二部分
查看>>
多页应用增量更新静态资源Webpack打包方案
查看>>
ionic V3.3开发踩坑集锦
查看>>
对RecyclerView中使用Adapter中的一点思考(RecyclerView 多布局)
查看>>
Realm入门指北
查看>>
为提升应用品质助力,绿标2.0检测项技术详解
查看>>