【树型DP】加分二叉树
问题 b: 【树型DP】加分二叉树
时间限制: 1 Sec 内存限制: 64 MB
提交: 8 解决: 6
[提交] [状态] [讨论版] [命题人:admin]
题目描述
subtree的左子树的加分× subtree的右子树的加分+subtree的根的分数。
若某个子树为空,规定其加分为1,叶子的加分就是叶节点本身的分数。不考虑它的空子树。 试求一棵符合中序遍历为(1,2,3,…,n)且加分最高的二叉树tree。要求输出:
(1)tree的最高加分。
(2)tree的前序遍历
输入
输出
样例输入
复制样例数据
10 5 4 8 9 19 2 1 40 20 22
样例输出
839701 7 4 2 1 3 5 6 9 8 10
#include<bits/stdc++.h> #define REP(i, a, b) for(int i = (a); i <= (b); ++ i) #define REP(j, a, b) for(int j = (a); j <= (b); ++ j) #define PER(i, a, b) for(int i = (a); i >= (b); -- i) using namespace std; const int maxn = 36; template <class T> inline void rd(T &ret) {char c;ret = 0;while ((c = getchar()) < '0' || c > '9');while (c >= '0' && c <= '9') {ret = ret * 10 + (c - '0'), c = getchar();} } int dp[maxn][maxn], t[maxn][maxn], n, p[maxn], tot; int dfs(int l, int r) {if (dp[l][r] > 0)return dp[l][r];if (l > r)return 1;if (l == r) {dp[l][r] = p[l];t[l][r] = l;}else {REP(i, l, r) {int tmp = dfs(l, i - 1)*dfs(i + 1, r) + p[i];if (tmp > dp[l][r]) {dp[l][r] = tmp;t[l][r] = i;}}}return dp[l][r]; } void dfs2(int l, int r) {if (l > r)return;if (!tot)cout << t[l][r];else cout << ' ' << t[l][r];tot++;dfs2(l, t[l][r] - 1);dfs2(t[l][r] + 1, r); } int main() {rd(n);REP(i, 1, n)rd(p[i]);cout << dfs(1, n) << endl;dfs2(1, n);return 0; }
转载于:https://www.cnblogs.com/czy-power/p/10459997.html
【树型DP】加分二叉树相关推荐
- 其他OJ 树型DP 选课
在朱全民的PPT介绍的一个树型DP经典题,<选课>,中文题目,不结束 找了很久找到了可以提交的OJ,重庆八中 http://www.cqoi.net:2012/JudgeOnline/pr ...
- 【树型DP】BZOJ1564 二叉查找树(noi2009)
标签: 二叉查找树 [题目描述] 已知一棵特殊的二叉查找树.根据定义,该二叉查找树中每个结点的数据值都比它左儿子结点的数据值大,而比它右儿子结点的数据值小. 另一方面,这棵查找树中每个结点都有一个权值 ...
- 二叉苹果树(树型DP+背包)
二叉苹果树 有一棵苹果树,如果树枝有分叉,一定是分2叉(就是说没有只有1个儿子的结点).这棵树共有N个结点(叶子点或者树枝分叉点),编号为1-N,树根编号一定是1. 我们用一根树枝两端连接的结点的编号 ...
- POJ3342 Party at Hali-Bula(树型DP求最大独立集+唯一解判断)
题意: 公司参加聚会,要求员工不能和他的上司同时参加,求最多能参加几个人并且判断解是否唯一. 要点: 树型DP的经典题,用dp[u][1]表示选取u的最大值,dp[u][0]表示不选取u的最大值,容易 ...
- 虚树+树型DP SDOI2011消耗战
<虚树+树型DP> SDOI2011消耗战 #include <iostream> #include <cstdio> #include <cstring&g ...
- BSOJ 2923:藤原妹红 MST+树型DP
2923 -- [模拟试题]藤原妹红 Description 在幻想乡,藤原妹红是拥有不老不死能力的人类.虽然不喜欢与人们交流,妹红仍然保护着误入迷途竹林村民.由于妹红算得上是幻想乡最强的人类,对于她 ...
- 洛谷P3354 Riv河流 [IOI2005] 树型dp
正解:树型dp 解题报告: 传送门! 简要题意:有棵树,每个节点有个权值w,要求选k个节点,最大化∑dis*w,其中如果某个节点到根的路径上选了别的节点,dis指的是到达那个节点的距离 首先这个一看就 ...
- hihocoder 1479 三等分 树型dp
描述 小Hi最近参加了一场比赛,这场比赛中小Hi被要求将一棵树拆成3份,使得每一份中所有节点的权值和相等. 比赛结束后,小Hi发现虽然大家得到的树几乎一模一样,但是每个人的方法都有所不同.于是小Hi希 ...
- 蓝桥杯:生命之树【树型dp】
之前本菜还没学树型dp的时候,下意识地认为这个东西很难,感觉这个东西结合了搜索+dp这两座算法界的大山必定很难,但万万没想到啊,这个东西很像我之前讲的记忆化搜索,甚至我认为,记忆化搜索的一个作用就是将 ...
最新文章
- LeetCode简单题之实现 strStr()
- opennre 中文关系抽取_OpenNRE 2.0:可一键运行的开源关系抽取工具包
- bLue的二叉树_JAVA
- 阿里云发布云原生加速器,携手生态企业拥抱数字时代
- unrecognized selector sent to instanceAuto property synthesis will not synthesize property
- Java实验实现一个circle类,java实验报告-类的定义.doc
- SAP Data Intelligence Modeler里的Kafka Producer和Kafka Consumer
- 从listView1中选择记录到listView2中
- android 功耗(1)---android 功耗分析方法和优化
- 算法:插入排序、归并排序、快速排序、堆排序
- NeatUpload
- 带经纬度的水印相机_经纬度水印相机怎么设置?
- TMC5160步进电机驱动芯片,简析
- linux必备软件合集
- it论坛 计算机科学概论,(毕业论文) 计算机科学与技术专业 IT技术论坛.doc
- html 图片垂直边距,HTML,CSS和垂直文本边距
- 【光线追踪系列十七】直接光源采样
- PCB原理图绘制(2)——工程文件的初步修改与设置
- MySQL 判断是否周末
- 方向导数、梯度、等高线、数量场与向量场