1864: [Zjoi2006]三色二叉树
1864: [Zjoi2006]三色二叉树
链接
分析:
做得最智障的一题了。。。
首先中间输出两个数之间没空格(换行居然也过了。。。), 写了dp[i][0/1/2],后来知道其实dp[i][0/1]就行了,最zz的一个bug,,,char pos = 1...
代码:
1 #include<cstdio> 2 #include<iostream> 3 #define L ls[u] 4 #define R rs[u] 5 6 using namespace std; 7 8 const int N = 500100; 9 10 int ls[N],rs[N],dp1[N][3],dp2[N][3],pos = 1; 11 char s[N]; 12 13 void dfs(int u) { 14 if (s[u] == '0') return; 15 if (s[u] == '1' || s[u] == '2') { 16 L = ++pos; 17 dfs(pos); 18 } 19 if (s[u] == '2') { 20 R = ++pos; 21 dfs(pos); 22 } 23 } 24 25 int tsl,tsr; 26 void DP(int u) { 27 if (!u) return ; 28 dp1[u][0] = 1;dp1[u][1] = dp1[u][2] = 0; 29 dp2[u][0] = 1;dp2[u][1] = dp2[u][2] = 0; 30 31 DP(L); 32 DP(R); 33 34 dp1[u][0] = max(dp1[L][1] + dp1[R][2], dp1[L][2] + dp1[R][1]) + 1; 35 dp1[u][1] = max(dp1[L][0] + dp1[R][2], dp1[L][2] + dp1[R][0]); 36 dp1[u][2] = max(dp1[L][0] + dp1[R][1], dp1[L][1] + dp1[R][0]); 37 38 dp2[u][0] = min(dp2[L][1] + dp2[R][2], dp2[L][2] + dp2[R][1]) + 1; 39 dp2[u][1] = min(dp2[L][0] + dp2[R][2], dp2[L][2] + dp2[R][0]); 40 dp2[u][2] = min(dp2[L][0] + dp2[R][1], dp2[L][1] + dp2[R][0]); 41 } 42 int main () { 43 scanf("%s",s+1); 44 dfs(1); 45 /* for (int i=1; i<=n; ++i) 46 cout << ls[i] << " "<< rs[i] << "\n";*/ 47 DP(1); 48 cout << max(dp1[1][0],max(dp1[1][1],dp1[1][2])) << " "; 49 cout << min(dp2[1][0],min(dp2[1][1],dp2[1][2])); 50 return 0; 51 }
转载于:https://www.cnblogs.com/mjtcn/p/9199584.html
1864: [Zjoi2006]三色二叉树相关推荐
- bzoj 1864: [Zjoi2006]三色二叉树
Description solution 正解:递归+树型DP 我们首先递归建树 然后考虑树型DP,我们设绿色的节点为Y,非绿色为N 我们神奇的发现:N会形成是很多条相互独立的链 也就是说 Y 的下发 ...
- 1864. [ZJOI2006]三色二叉树【树形DP】
Description Input 仅有一行,不超过500000个字符,表示一个二叉树序列. Output 输出文件也只有一行,包含两个数,依次表示最多和最少有多少个点能够被染成绿色. Sample ...
- 洛谷P2585 [ZJOI2006]三色二叉树
题目描述 输入输出格式 输入格式: 输入文件名:TRO.IN 输入文件仅有一行,不超过10000个字符,表示一个二叉树序列. 输出格式: 输出文件名:TRO.OUT 输出文件也只有一行,包含两个数,依 ...
- 洛谷 2585 [ZJOI2006]三色二叉树——树形dp
题目:https://www.luogu.org/problemnew/show/P2585 可以把不是绿色的记成一种.仔细一想不会有冲突.如果自己是绿色,孩子的不同颜色不会冲突:如果自己不是绿色,自 ...
- 洛谷P2585[ZJOI2006]三色二叉树(树形DP)
思路 树形DP,首先是递归建树,然后是DP状态方程转移. 代码 #include<cstdio> #include<cstring> #include<algorithm ...
- 【BZOJ-1864】三色二叉树 树形DP
1864: [Zjoi2006]三色二叉树 Time Limit: 1 Sec Memory Limit: 64 MB Submit: 659 Solved: 469 [Submit][Statu ...
- BZOJ-1864-[Zjoi2006]三色二叉树(树形dp)
Description Input 仅有一行,不超过500000个字符,表示一个二叉树序列. Output 输出文件也只有一行,包含两个数,依次表示最多和最少有多少个点能够被染成绿色. Sample ...
- 2017.9.24 三色二叉树 思考记录
树形dp入门题,,,,枚举转移即可. 设f[i][0]表示这个点不是绿色 f[i][1]表示这个点是绿色. 由于要求是相邻和两儿子,所以枚举下面点的情况转移就可以了 码: #include<io ...
- 三色视者与四色视者身后的理论基础:色彩原理
理论上,常人的肉眼是三色视觉(Trichromacy),通过三种视锥细胞(也可以说感光色素)来生成蓝色.绿色和红色的波长.但是,肉眼的不足之处是存在同色异谱色(metamers),也就是说尽管色彩看起 ...
最新文章
- (DBA之路【五】)关于锁的故事
- 史上更全面的数据库分库分表、数据一致性、主键分配思路!
- 聊聊Dubbo - Dubbo可扩展机制源码解析
- weboffice 应用
- tf.where 用法
- vs2019+wdk10开发 xp, win7, win10 驱动
- 145. 超市【小根堆 贪心】
- the value of esp was not properly saved
- 浅谈 trie树 及其实现
- 我从小米裸辞后进Shopee了...
- 多线程3,线程池封装库
- JavaScript变量相关总结
- 服务器更新维护尚未全部完成,【已开服】11月21日全部服务器更新维护公告
- Excel如何批量生成条形码
- ccxprocess启动项可以禁用么_启动项禁用
- Document/View/Frame三口组深入探讨
- SQL读取Excel数据
- ios点击推送闪退_关于苹果手机QQ闪退的问题
- merge和AMVP
- windows7 VCP安装失败的解决办法
热门文章
- python没有英文基础能学吗-初中毕业没有英语基础能学编程吗?该学C或者Python?...
- 中国最大的python社区-python找最大值
- python面试-马哥教育官网-专业Linux培训班,Python培训机构
- python的编程模式-实例解析Python设计模式编程之桥接模式的运用
- 2018python好找工作吗-2018年IT行业薪资大揭秘:你拖后腿了吗?
- python财务-财务方面的学生如何学习python?
- python编程从入门到精通pdf-Python编程从入门到精通.pdf
- php和python交互-Python如何实现简单的用户交互程序(示例)
- 自学python有用吗-普通人学Python有用吗?学完能做什么?
- python画出心形图-python画出心形图