洛谷 2585 [ZJOI2006]三色二叉树——树形dp
题目:https://www.luogu.org/problemnew/show/P2585
可以把不是绿色的记成一种。仔细一想不会有冲突。如果自己是绿色,孩子的不同颜色不会冲突;如果自己不是绿色,自己的不是绿色的孩子对于自己就像二分图一样的感觉,所以总有方案使得不区分另外两种颜色也不会有冲突。
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int N=5e5+5; int n,rt,tot,ls[N],rs[N],dp[N][2][2],p0;//是/否绿 最大/小 char ch[N]; void build(int &cr,int dep) {cr=++tot;if(ch[p0]=='0')p0++;else if(ch[p0]=='1')p0++,build(ls[cr],dep+1);elsep0++,build(ls[cr],dep+1),build(rs[cr],dep+1); } void dfs(int cr) {if(!ls[cr]){dp[cr][0][0]=dp[cr][0][1]=1;dp[cr][1][0]=dp[cr][1][1]=0;return;}else if(!rs[cr]){int v=ls[cr]; dfs(v);dp[cr][0][0]=dp[v][1][0]+1;dp[cr][0][1]=dp[v][1][1]+1;dp[cr][1][0]=max(dp[v][0][0],dp[v][1][0]);dp[cr][1][1]=min(dp[v][0][1],dp[v][1][1]);}else{int Ls=ls[cr],Rs=rs[cr];dfs(Ls); dfs(Rs);dp[cr][0][0]=dp[Ls][1][0]+dp[Rs][1][0]+1;dp[cr][0][1]=dp[Ls][1][1]+dp[Rs][1][1]+1;dp[cr][1][0]=max(dp[Ls][0][0]+dp[Rs][1][0],dp[Ls][1][0]+dp[Rs][0][0]);dp[cr][1][1]=min(dp[Ls][0][1]+dp[Rs][1][1],dp[Ls][1][1]+dp[Rs][0][1]);} } int main() {//freopen("TRO.IN","r",stdin);//freopen("TRO.OUT","w",stdout);scanf("%s",ch);n=strlen(ch);build(rt,1);dfs(rt);printf("%d %d\n",max(dp[rt][0][0],dp[rt][1][0]),min(dp[rt][0][1],dp[rt][1][1]));return 0; }
转载于:https://www.cnblogs.com/Narh/p/9676480.html
洛谷 2585 [ZJOI2006]三色二叉树——树形dp相关推荐
- 洛谷P2585[ZJOI2006]三色二叉树(树形DP)
思路 树形DP,首先是递归建树,然后是DP状态方程转移. 代码 #include<cstdio> #include<cstring> #include<algorithm ...
- 洛谷P2585 [ZJOI2006]三色二叉树
题目描述 输入输出格式 输入格式: 输入文件名:TRO.IN 输入文件仅有一行,不超过10000个字符,表示一个二叉树序列. 输出格式: 输出文件名:TRO.OUT 输出文件也只有一行,包含两个数,依 ...
- 【BZOJ-1864】三色二叉树 树形DP
1864: [Zjoi2006]三色二叉树 Time Limit: 1 Sec Memory Limit: 64 MB Submit: 659 Solved: 469 [Submit][Statu ...
- 1864: [Zjoi2006]三色二叉树
1864: [Zjoi2006]三色二叉树 链接 分析: 做得最智障的一题了... 首先中间输出两个数之间没空格(换行居然也过了...), 写了dp[i][0/1/2],后来知道其实dp[i][0/1 ...
- [洛谷 P4084 USACO17DEC] Barn Painting G (树形dp经典)
[洛谷 P4084 USACO17DEC] Barn Painting G 题目链接 大致题意: 给定一颗N个节点组成的树,3种颜色,其中K个节点已染色,要求任意两相邻节点颜色不同,求合法染色方案数 ...
- 【洛谷P4084】Barn Painting【树形DP】
题目大意: 题目链接:https://www.luogu.org/problemnew/show/P4084 一棵nnn个节点的树上有kkk个点已被染色.求将这棵树染成三种颜色且相邻的节点颜色不同的方 ...
- 1864. [ZJOI2006]三色二叉树【树形DP】
Description Input 仅有一行,不超过500000个字符,表示一个二叉树序列. Output 输出文件也只有一行,包含两个数,依次表示最多和最少有多少个点能够被染成绿色. Sample ...
- bzoj 1864: [Zjoi2006]三色二叉树
Description solution 正解:递归+树型DP 我们首先递归建树 然后考虑树型DP,我们设绿色的节点为Y,非绿色为N 我们神奇的发现:N会形成是很多条相互独立的链 也就是说 Y 的下发 ...
- 洛谷 P1352 没有上司的舞会(树形 DP)
题目描述 某大学有N个职员,编号为1~N.他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司.现在有个周年庆宴会,宴会每邀请来一个职员都会增加一定的快乐指数Ri, ...
最新文章
- 【Qt】Qt5.x移植后的环境配置(imx6)
- linux carry php Soap 扩展
- 马化腾内部分享:三个问题说透如何做产品
- Activity与Thread之间的通讯(old)
- mysql基础语法(常用)
- python methodtype_Python的实例定属性和方法或类绑定方法
- Android逆向笔记-破解自己编写的Android应用程序(开发及破解)
- Android开发笔记(四)字符串格式化
- Tensor的Broadcasting操作
- 网管,真的是我该选择的路吗?
- leetcode------Flatten Binary Tree to Linked List
- 爱立信、EMC笔试面试
- linux拷贝文件夹下所有文件
- vmware linux top si高以及网卡队列、软负载相关优化
- yigo 第一阶段 异常处理 解决方案
- 解决matplotlib不显示图片
- Maven下载及目录结构
- iOS MP3流媒体播放 边缓冲边播放 FreeStreamer框架
- 摘自:《设计心理学3:情感设计》 — 〔美〕唐纳德·A·诺曼(Donald Arthur Norman)
- 从python入门开始,玩这个炸弹超人小游戏,打通关就可以掌握编程