bzoj1864,懒得复制,戳我戳我

Solution:

  • 其实想出来了\(dp\)方程推出来了最大值,一直没想到推最小值
  • \(dp[i][1/0]\)表示\(i\)号节点的子树中的绿色染色最大值,\(1\)表示该节点染色,\(0\)表示该节点不染色

\[dp[i][1]=dp[ls][0]+dp[rs][0]+1
\]

\[dp[i][0]=max(dp[ls][1]+dp[rs][0],dp[rs][1]+dp[ls][0])
\]

  • \(f[i][1/0]\)表示存的最小值,状态同上

\[f[i][1]=f[ls][0]+f[rs][0]+1
\]

\[f[i][0]=min(f[ls][1]+f[rs][0],f[rs][1]+f[ls][0])
\]

傻逼dp题卡了我好久

Code:

//It is coded by Ning_Mew on 4.20
#include<bits/stdc++.h>
#define ls(x) node[x].ch[0]
#define rs(x) node[x].ch[1]
using namespace std; const int maxn=5e5+7; int n,cnt=1,pl=-1;
struct Node{
int ch[2];
//Node(){ch[0]=-1;ch[1]=-1;}
}node[maxn];
int dp[maxn][2],f[maxn][2];
string s; void build(int u){
pl++;
if(s[pl]=='0'){dp[u][0]=0;dp[u][1]=1;f[u][0]=0;f[u][1]=1;return;}
if(s[pl]=='2'){
cnt++;node[u].ch[0]=cnt;build(cnt);
cnt++;node[u].ch[1]=cnt;build(cnt);
dp[u][1]=dp[ ls(u) ][0]+dp[ rs(u) ][0]+1;
dp[u][0]=max(dp[ ls(u) ][0]+dp[ rs(u) ][1],dp[ rs(u) ][0]+dp[ ls(u) ][1]);
f[u][1]=f[ ls(u) ][0]+f[ rs(u) ][0]+1;
f[u][0]=min(f[ ls(u) ][0]+f[ rs(u) ][1],f[ ls(u) ][1]+f[ rs(u) ][0]);
}
if(s[pl]=='1'){
cnt++;node[u].ch[0]=cnt;build(cnt);
dp[u][0]=dp[ ls(u) ][1];
dp[u][1]=dp[ ls(u) ][0]+1;
f[u][0]=f[ ls(u) ][0];
f[u][1]=f[ ls(u) ][0]+1;
}return;
}
int main(){
cin>>s;
build(1);
/*for(int i=1;i<=cnt;i++){
cout<<i<<' '<<node[i].ch[0]<<' '<<node[i].ch[1]<<endl;
}*/
printf("%d %d\n",max(dp[1][0],dp[1][1]),min(f[1][0],f[1][1]));
return 0;
}

【题解】 bzoj1864: [Zjoi2006]三色二叉树 (动态规划)的更多相关文章

  1. BZOJ1864[ZJOI2006]三色二叉树[树形DP]

    1864: [Zjoi2006]三色二叉树 Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 773  Solved: 548[Submit][Status] ...

  2. bzoj千题计划212:bzoj1864: [Zjoi2006]三色二叉树

    http://www.lydsy.com/JudgeOnline/problem.php?id=1864 #include<cstdio> #include<cstring> ...

  3. bzoj1864 [Zjoi2006]三色二叉树

    Description Input 仅有一行,不超过500000个字符,表示一个二叉树序列. Output 输出文件也只有一行,包含两个数,依次表示最多和最少有多少个点能够被染成绿色. Sample ...

  4. 【BZOJ1864】三色二叉树(动态规划)

    [BZOJ1864]三色二叉树(动态规划) 题面 BZOJ 题解 首先把树给构出来. 设\(f[i][0/1]\)表示当前节点\(i\),是否是绿色节点的子树中最大/最小的绿色节点的个数和. 转移很显 ...

  5. 【BZOJ1864】[Zjoi2006]三色二叉树 树形DP

    1864: [Zjoi2006]三色二叉树 Description Input 仅有一行,不超过500000个字符,表示一个二叉树序列. Output 输出文件也只有一行,包含两个数,依次表示最多和最 ...

  6. 嘴巴题5 「BZOJ1864」[ZJOI2006] 三色二叉树

    1864: [Zjoi2006]三色二叉树 Time Limit: 1 Sec Memory Limit: 64 MB Submit: 1195 Solved: 882 [Submit][Status ...

  7. 【BZOJ-1864】三色二叉树 树形DP

    1864: [Zjoi2006]三色二叉树 Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 659  Solved: 469[Submit][Status] ...

  8. BZOJ 1864: [Zjoi2006]三色二叉树( 树形dp )

    难得的ZJOI水题...DFS一遍就行了... ----------------------------------------------------------------------- #inc ...

  9. BZOJ_1864_[Zjoi2006]三色二叉树_树形DP

    BZOJ_1864_[Zjoi2006]三色二叉树_树形DP 题意: 分析:递归建树,然后DP,从子节点转移. 注意到红色和蓝色没有区别,因为我们可以将红蓝互换而方案是相同的.这样的话我们只需要知道当 ...

随机推荐

  1. jquery操作checked

    jquery操作checkbox,如何获取勾选状态?如何使得勾选?如何取消勾选? 来段代码就知道了: <html> <head> <meta charset=" ...

  2. 搭建HBase的本地模式、伪分布式、全分布式和HA模式

    一.安装HBase: 我这里选择的是hbase-1.3.1-bin.tar.gz版本解压HBase: tar -zxvf hbase-1.3.1-bin.tar.gz -C ~/training 配置 ...

  3. python中安装Tensorflow

    执行命令:pip install --upgrade tensorflow 即可.

  4. python图像处理模块Pillow--Image模块

    一.简介 PIL:Python Imaging Library,已经是Python平台事实上的图像处理标准库了.PIL功能非常强大,但API却非常简单易用 由于PIL仅支持到Python 2.7,加上 ...

  5. 2017-2018-2 20155315《网络对抗技术》Exp7 :网络欺诈防范

    实验目的 本实践的目标理解常用网络欺诈背后的原理,以提高防范意识,并提出具体防范方法. 实验内容 简单应用SET工具建立冒名网站 ettercap DNS spoof 结合应用两种技术,用DNS sp ...

  6. system表空间不可改名

    SQL> startup mount;ORACLE instance started. Total System Global Area  814227456 bytesFixed Size   ...

  7. 汇编 REPNE/REPNZ指令,SCASW指令,SCASD指令,SCAS指令

    知识点: REPNE/REPNZ 指令 SCASW 指令 SCASD 指令 SCAS 指令 一.SCASW 指令 //SCASB cmp word ptr [edi],al //对标志位的影响 ...

  8. Spring Boot(十二):Spring Boot 如何测试打包部署

    有很多网友会时不时的问我, Spring Boot 项目如何测试,如何部署,在生产中有什么好的部署方案吗?这篇文章就来介绍一下 Spring Boot 如何开发.调试.打包到最后的投产上线. 开发阶段 ...

  9. Flask学习-Flask app启动过程

    因为0.1版本整体代码大概只有350行,比较简单.所以本篇文章会以Flask 0.1版本源码为基础进行剖析Flask应用的启动过程. Flask参考资料flask,官网有一个最简单app: from ...

  10. 501. Find Mode in Binary Search Tree【LeetCode by java】

    Given a binary search tree (BST) with duplicates, find all the mode(s) (the most frequently occurred ...