BZOJ1864[ZJOI2006]三色二叉树[树形DP]】的更多相关文章

1864: [Zjoi2006]三色二叉树 Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 773  Solved: 548[Submit][Status][Discuss] Description Input 仅有一行,不超过500000个字符,表示一个二叉树序列. Output 输出文件也只有一行,包含两个数,依次表示最多和最少有多少个点能够被染成绿色. Sample Input 1122002010 Sample Output 5 2 HINT…
1864: [Zjoi2006]三色二叉树 Description Input 仅有一行,不超过500000个字符,表示一个二叉树序列. Output 输出文件也只有一行,包含两个数,依次表示最多和最少有多少个点能够被染成绿色. Sample Input 1122002010 Sample Output 5 2 题解:经典的树形DP题.用f[i]表示点i是绿色时最多有多少个点能被染成绿色,g[i]表示i不是绿色时最多有多少个点被染成绿色,容易推出状态转移方程: f[i]=g[ch[i][0]]+…
1864: [Zjoi2006]三色二叉树 Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 659  Solved: 469[Submit][Status][Discuss] Description Input 仅有一行,不超过500000个字符,表示一个二叉树序列. Output 输出文件也只有一行,包含两个数,依次表示最多和最少有多少个点能够被染成绿色. Sample Input 1122002010 Sample Output 5 2 HINT…
难得的ZJOI水题...DFS一遍就行了... ----------------------------------------------------------------------- #include<cstdio> #include<cstring> #include<algorithm> #include<cctype>   using namespace std;   const int maxn = 500009;   int N = 0,…
传送门 Description Input 输入文件名:TRO.IN 输入文件仅有一行,不超过500000个字符,表示一个二叉树序列. Output 输出文件名:TRO.OUT 输出文件也只有一行,包含两个数,依次表示最多和最少有多少个点能够被染成绿色. Sample Input 1122002010 Sample Output 5 2 Code: //By Menteur_Hxy #include<cstdio> #include<cstring> #include<ios…
题目:https://www.luogu.org/problemnew/show/P2585 可以把不是绿色的记成一种.仔细一想不会有冲突.如果自己是绿色,孩子的不同颜色不会冲突:如果自己不是绿色,自己的不是绿色的孩子对于自己就像二分图一样的感觉,所以总有方案使得不区分另外两种颜色也不会有冲突. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using na…
Description Input 仅有一行,不超过500000个字符,表示一个二叉树序列. Output 输出文件也只有一行,包含两个数,依次表示最多和最少有多少个点能够被染成绿色. 题解:本题大水题,主要卡读入. 能把树建出来就普及组水题了~ #include <bits/stdc++.h> #define setIO(s) freopen(s".in","r",stdin) #define maxn 1000000 #define lson ch[…
http://www.lydsy.com/JudgeOnline/problem.php?id=1864 #include<cstdio> #include<cstring> #include<algorithm> using namespace std; #define N 500001 char s[N]; int root; ]; int m; ],f[N][]; void dfs(int &rt) { rt=++m; '; if(!tmp) return…
三色二叉树 题目描述 一棵二叉树可以按照如下规则表示成一个由 \(0.1.2\) 组成的字符序列,我们称之为"二叉树序列 \(S\) ": \(0\) 该树没有子节点. \(1S_1\) 该树有一个子节点. \(S_1\) 为其二叉树序列 \(1S_1S_2\) 该树有两个子节点,\(S_1,S_2\) 分别为两个二叉树的序列 例如,下图所表示的二叉树可以用二叉树序列 \(S=21200110\) 来表示. 你的任务是要对一棵二叉树的节点进行染色.每个节点可以被染成红色.绿色或蓝色.并…
题目:https://www.luogu.org/problemnew/show/P2585 首先,三色其实记录两种状态:是绿色,不是绿色 即可,因为红蓝可以随意取反: 一开始因为懒得还原出树,所以写了个错误贪心-_- #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; ; int k,mx,mn,siz[maxn]; c…