当前位置: 首页 > news >正文

P1040题解

题目链接

这是一道区间DP题,当然你说他是树形DP题也行.因为这道题给的是中序遍历,所以说分清左右子树是很容易的,这为我们使用DP创造了机会. 这里我们假设dp[i][j]表示给出的序列中i到j最大的值.由于是中序遍历,只要这一串是子树那么无论哪个元素是根结点都可以.

因此状态转移方程为 dp[i][j] = max(dp[i][j],dp[i][k-1]*dp[k+1][j]+a[k](i<k<j))

我们用区间DP简单实现即可.这里注意dp[i][i]的值就是a[i].

同时为了输出前序遍历我们记录一下每一段的根节点(root)

#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N=35;
int n,a[N],dp[N][N],root[N][N];
void work(int l, int r){if(l>r) return;cout<<root[l][r]<<' ';if(l==r) return;work(l,root[l][r]-1);work(root[l][r]+1,r);
}
signed main(){cin>>n;for(int i=1;i<=n;i++) cin>>a[i];for(int i=1;i<=n;i++) root[i][i]=i, dp[i][i-1]=1, dp[i][i]=a[i];for(int len=2;len<=n;len++){for(int i=1;i+len-1<=n;i++){int j=i+len-1;dp[i][j]=dp[i+1][j]+a[i], root[i][j]=i;for(int k=i+1;k<j;k++){if(dp[i][j]<dp[i][k-1]*dp[k+1][j]+a[k]){dp[i][j]=dp[i][k-1]*dp[k+1][j]+a[k];root[i][j]=k;}}}}cout<<dp[1][n]<<endl, work(1,n);return 0;
}

http://www.dtcms.com/a/500919.html

相关文章:

  • 【LLM】字节的DAPO强化学习算法
  • wordpress 上传文件名关键词优化排名软件哪家好
  • lovefort表白网站制作wordpress导航栏调用
  • 郑州网站建设全媒体运营师培训费用
  • 深圳方维网站设计公司seo网站建设视频
  • 有网站的源代码如何做网站如何上传自己的做的网站
  • 身份认证技术对比:Session、JWT、Token、SSO、OAuth 2.0
  • 温州网站建设 首选国鼎网络好昆山网站建设义搏
  • 青岛慧思网站建设wordpress主题防止破解
  • 【小白笔记】普通二叉树(General Binary Tree)和二叉搜索树的最近公共祖先(LCA)
  • 画出网站和目录结构图电子商务就业岗位有哪些
  • 网站开发的有关公司如何设计小程序
  • 架构建模技术深度解析:SysML与AADL的全方位对比
  • 1920的网站做字体大小车行网站源码
  • 网站建设 接单什么网站做简历免费
  • 网页打不开但是qq能上是怎么回事aso推广优化
  • 汽车设计网站wordpress网页不存在
  • 做的网站很卡是什么原因宁波网站建设费用是多少钱
  • 淘客返利网站怎么做揭阳网站制作软件
  • MCAL故障注入点的作用解析
  • RTX5060Ti安装双系统ubuntu22.04各种踩坑点(黑屏,引导区修复、装驱动、server版本安装)
  • 酒店做爰视频网站平面设计创意构图
  • 网站的轮播图一般是做多大爬虫科技网站建设
  • 首页调用网站栏目id网站设计版权
  • 礼品网站建设广州冼村改造
  • 做学校网站素材图片广州短视频内容营销平台
  • 中国建设银行网官方网站南京网站建设优化
  • 在哪个网站上做实验仪器比较好米拓建设网站
  • dedecms织梦搬家公司网站模板小商铺装修
  • 5P03舞台灯P沟道MOS管-HC3407A 支持-30V -4.1A SOT-23封装 低内阻 原厂直供 高性价比PMOS选型表