首页 > TAG信息列表 > P2585

动态规划:P2585[ZJOI2006]三色二叉树

P2585[ZJOI2006]三色二叉树 题目传送门:P2585 [ZJOI2006]三色二叉树 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目: 思路分析: 可以借鉴动态规划:P1352没有上司的舞会 - 朱朱成 - 博客园 (cnblogs.com),建立一个二维的dp 第二维01代表有没有去,有没有染成绿色的。对于一个结点来

P2585 [ZJOI2006]三色二叉树 树形Dp

    输入格式 输入文件仅有一行,不超过10000个字符,表示一个二叉树序列 输出格式 输出文件也只有一行,包含两个数,依次表示最多和最少有多少个点能够被染成绿色。 样例 样例输入 1122002010 样例输出 5 2 可以用f[i][0],f[i][1],f[i][2]分别表示当i被染成

解题报告:luogu P2585

题目链接:P2585 [ZJOI2006]三色二叉树 _shy 大佬求助,就尝试切了切。 树形计数 \(dp\) ,比树上背包简单多了。 设 \(dp_{i,0/1/2}\) 为 \(i\) 号点颜色为绿,红,蓝时绿色的个数,然后处理出每个节点的儿子数(我可能做麻烦了),分类讨论即可,方程太多,就看代码吧。 注意初始化。 其实可以直接在序

P2585 [ZJOI2006]三色二叉树

    学了一下dfs建树 指针蛮好的,而且因为是dfs序直接倒着来就行了,和上司那个题差不多 #include<bits/stdc++.h>using namespace std;char ch[501000];int sn[501000][5],root,f[501000],g[501000],it;void dfs(int &t){ t=++it; int x=ch[it]-'0'; if(x==0)return ;