P1040,jzoj1167-加分二叉树【树形dp】

前言

没有SPJ坑了我好久qwq


正题

测试连接:https://www.luogu.org/recordnew/lists?uid=52918&pid=P1040


大意

一颗二叉树的中序遍历是1,2,3...n2,n1,n1,2,3...n−2,n−1,n然后给出每个点的值aiai,每个点的分数是

si=slson×srson+aisi=slson×srson+ai

求根节点最大分值的情况,并输出前序遍历(如果有多组解输出字典序先的)


解题思路

我们分析一下,中序遍历就是根在中间,左右两边就是子树,所以我们可以用一个区间来表示一颗子树,然后枚举根。
f[i][j]f[i][j]来表iji∼j区间作为一颗树时的最大值,然后直接树形dp。


代码

#include<cstdio>
#include<algorithm>
using namespace std;
int n,a[31],fa[31][31];
long long f[31][31];
void dp(int l,int r)
{if (f[l][r]) return;if (l==r)//特判{fa[l][l]=l;f[r][r]=a[r];return;}for (int i=l;i<r;i++){for (int j=i+1;j<=r;j++){dp(i,j-1);if (f[i][j-1]+a[j]>=f[i][j])//只取右子树{f[i][j]=f[i][j-1]+a[j];fa[i][j]=j;}for (int k=i+1;k<j;k++){dp(i,k-1);dp(k+1,j);if (f[i][k-1]*f[k+1][j]+a[k]>=f[i][j])//枚举根{f[i][j]=f[i][k-1]*f[k+1][j]+a[k];fa[i][j]=k;}}dp(i+1,j);if (f[i+1][j]+a[i]>=f[i][j])//只取左子树{f[i][j]=f[i+1][j]+a[i];fa[i][j]=i;}}}
}
void write(int x,int l,int r)//输出遍历
{printf("%d ",fa[l][r]);if (fa[l][r]!=l)write(x*2,l,fa[l][r]-1);if (fa[l][r]!=r)write(x*2+1,fa[l][r]+1,r);
}
int main()
{scanf("%d",&n);for (int i=1;i<=n;i++)scanf("%d",&a[i]);dp(1,n);printf("%lld\n",f[1][n]);write(1,1,n); 
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/324107.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

是现在的钱不值钱还是药太贵!

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号【雄雄的小课堂】。莫名其妙的就感觉身体不舒服&#xff0c;然后越来越严重&#xff0c;打小以来还是第一次遇见这样的&#xff0c;你说是感冒吧&#xff0c;它也不流鼻涕&#xff0c;喉咙也不痛&#xff0c;鼻子也通…

P3951,jzoj5473-小凯的疑惑【数论】(NOIP2017提高组)

#正题 评测记录&#xff1a; https://www.luogu.org/recordnew/show/8283818 大意 两个币值&#xff08;互质正整数&#xff09;&#xff0c;求不能完全&#xff08;需要找零&#xff09;的最贵的东西。 解题思路 首先众所周知axbyc而且a和b互质的正整数&#xff0c;c为正整数…

一次堆外内存泄露的排查过程

转载自 一次堆外内存泄露的排查过程 最近在做一个基于 websocket 的长连中间件&#xff0c;服务端使用实现了 socket.io 协议&#xff08;基于websocket协议&#xff0c;提供长轮询降级能力&#xff09; 的 netty-socketio 框架&#xff0c;该框架为 netty 实现&#xff0c;鉴…

.NET Core 2.0 特性介绍和使用指南

前言 这一篇会比较长&#xff0c;介绍了.NET Core 2.0新特性、工具支持及系统生态&#xff0c;现状及未来计划&#xff0c;可以作为一门技术的概述来读&#xff0c;也可以作为学习路径、提纲来用。 对于.NET Core 2.0的发布介绍&#xff0c;围绕2.0的架构体系&#xff0c;我想…

Lombok MyBatisX

Lombok的使用 [1] 什么是LomBok lombok是一个可以通过简单的注解的形式来帮助我们简化消除一些必须有但显得很臃肿的 Java 代码的工具&#xff0c;简单来说&#xff0c;比如我们新建了一个类&#xff0c;然后在其中写了几个属性&#xff0c;然后通常情况下我们需要手动去建立g…

希望尽快好起来吧~

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注公众号【雄雄的小课堂】。莫名其妙的生病&#xff0c;每天睡觉之前都在祷告&#xff0c;睡一觉明天早上就好了&#xff0c;结果第二天非但没有好&#xff0c;反而还加重了。买的药吃了也无济于事&#xff0c;还渐渐的开始发烧……

2018/7/9-纪中某B组题【jzoj1503,jzoj1158,jzoj1161】

正题 T1&#xff1a;jzoj1503-体育场【带权并查集】 博客链接&#xff1a;https://blog.csdn.net/mr_wuyongcong/article/details/80969720 T2&#xff1a;jzoj1158-荒岛野人【扩欧,gcd,同余方程】 博客链接&#xff1a;https://blog.csdn.net/mr_wuyongcong/article/details…

一次堆外OOM问题的排查过程

转载自 一次堆外OOM问题的排查过程 背景 线上服务有一台机器访问不通&#xff08;一个管理平台),在公司的服务治理平台上查看服务的状况是正常的&#xff0c;说明进程还在。进程并没有完全crash掉。去线上查看机器日志&#xff0c;发现了大量的OOM异常: 017-03-15 00:00:0…

Azure与Scott Guthrie:Azure安全中心和基于角色的访问控制

InfoQ有幸采访了Microsoft执行副总裁Scott Guthrie&#xff0c;请他谈了谈Azure以及他最近的Red Shirt Dev Tours&#xff08;红杉开发之旅&#xff09;【译注1】。昨天我们谈到了Azure提供了自定义仪表盘的功能&#xff0c;它能够使得开发者创建自定义工作任务流程&#xff0c…

什么时候才能都及格呢?

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注公众号【雄雄的小课堂】。今天是周五&#xff0c;又到了周测的时候了&#xff0c;发现现在考试&#xff0c;学生们的抵触情绪不会那么强烈了&#xff0c;以前只要一说啥时啥时考试&#xff0c;下面一片哀嚎声&#xff0c;各种不…

MyBatisPlus(基于starter和Bean方式)

文章目录基于boot-starter方式基于Bean方式基于boot-starter方式 1、【microboot项目】修改配置文件&#xff0c;引入所需要的相关依赖库: dependences.gradle ext.versions [ // 定义所有要使用的版本号springboot : 2.4.3, // SpringBoot版本…

jzoj1013-GCD与LCM【数论】

正题 大意 给出某对数a,b的gcd和lcm&#xff0c;然后求b-a的最小值 解题思路 我们定义A为gcd(a,b)gcd(a,b)&#xff0c;B为lcm(a.b)lcm(a.b)首先我们拿出推lcm的公式 Bab/ABab/A然后移项得 abAB(A≤a,b≤B)abAB(A≤a,b≤B)之后我们就可以枚举了。首先因为只有AA的倍数gcd(a,…

解决Visual Studio For Mac Restore失败的问题

之前就了解到微软出了mac版的VS&#xff0c;没太多的关注&#xff0c;自己也就是使用 DotNet Core SDK VS Code 做一些小demo。 前两天发布了DotNet Core 2.0 &#xff0c;Visual Studio For Mac 7.1 之后&#xff0c;感觉可以装起来用用&#xff0c;把win下面的项目转到Core…

来之不易的美团面试,结果居然挂了...(附面试答案)

转载自 来之不易的美团面试&#xff0c;结果居然挂了...&#xff08;附面试答案&#xff09; 一面 自我介绍 答&#xff1a;自我介绍是面试中唯一的自己主动介绍自己的环节&#xff0c;一定要好好把握好&#xff0c;你数据结构学的号可以手撕一个红黑树你就说我数据结构掌握…

三班的孩子们,你们现在还好吗?

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注公众号【雄雄的小课堂】。三班的孩子们&#xff0c;你们还好吗&#xff1f;虽然已经就业&#xff0c;但还是会时不时的想起你们来&#xff0c;希望你们过的一切都好&#xff0c;在公司中也能快速适应。上午拿着电脑准备去四班上…

AOP案例(日志)

Logs 实体类 Data NoArgsConstructor AllArgsConstructor ApiModel public class Logs implements Serializable {private static final long serialVersionUID -89998567097386518L;/*** 日志ID*/ApiModelProperty(hidden true)private Integer opid;/*** 操作时间*/ApiMod…

jzoj1164-求和【欧拉函数,数论】(筛欧拉函数模板)

正题 大意 给出一个nn,求1&#x223C;n" role="presentation" style="position: relative;">1∼n1∼n里面和nn互质的数的和。解题思路&#x03C6;(i)" role="presentation" style="position: relative;">φ(i)φ(…

升级项目到.NET Core 2.0,在Linux上安装Docker,并成功部署

概述 容器&#xff0c;顾名思义是用来存放并容纳东西的器皿&#xff1b; 而容器技术伴着Docker的兴起也渐渐的映入大家的眼帘&#xff0c;它是一个抽象的概念&#xff0c;同时也是默默存在世上多年的技术&#xff0c;不仅能使应用程序间完全的隔离&#xff0c;而且还能在共享…

MySQL 大表优化方案(1)

转载自 干货&#xff01;&#xff01;&#xff01;MySQL 大表优化方案&#xff08;1&#xff09; 当MySQL单表记录数过大时&#xff0c;增删改查性能都会急剧下降&#xff0c;可以参考以下步骤来优化&#xff1a; 单表优化 除非单表数据未来会一直不断上涨&#xff0c;否则…

顺时针打印3*3矩阵

import java.util.ArrayList; public class Mytest { //剑指OFFer 顺时针打印n*m矩阵 //思路 模拟过程 以顺时针顺序打印几层 取决于行数与列数中最小的那一个 两层构成一圈 两个之中最小的那个除以2 // public static void main(String[] args) { String[][] a new String[][]…