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

【区间DP】戳气球 题解

戳气球

有 n 个气球,编号为 000n−1n−1n1,每个气球上标有一个数字 aia_iai。现在要求你戳破所有气球。当你戳破气球 iii 时,你可以获得 该气球本身乘相邻的两个气球上的数字个硬币。

你的任务是找到戳破所有气球所能获得硬币的最大数量。

注意:

  1. 当一个气球被戳破时,其左侧气球的右侧被认为没有气球,右侧气球的左侧被认为没有气球。
  2. 当一个气球左侧与右侧均没有气球时,其无法被戳破。
  3. 戳破气球的顺序不同,获得的硬币数也可能不同。

输入格式

输入包含两行:

第一行:一个整数 nnn,表示气球的数量。

第二行:nnn 个整数,其中第 iii 个数 表示编号为 iii 的气球上的数字。

输出格式

输出一个整数,表示戳破所有气球所能获得硬币的最大数量。

输入 / 输出例子 1 输入:

4 3 1 5 8

输出:

55

提示

数据范围 2≤n≤5002 \le n \le 5002n5000≤ai≤1000 \le a_i \le 1000ai100

样例解释:

第一步戳破 888,得 5×8=405× 8 =405×8=40 个分

第二步戳破 111,得 3×1×5=153×1×5 =153×1×5=15


#include<bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;
const int N=500+7;
int n,a[N],dp[N][N];
void solve(){cin>>n;a[0]=1,a[n+1]=1;//赋初值,不然乘0等于0for(int i=1;i<=n;i++){cin>>a[i];}for(int s=2;s<=n;s++){for(int l=1;l+s-1<=n;l++){int r=l+s-1;for(int k=l;k<=r;k++){int x=a[k];if(k>l) x*=a[k-1];//为了不超过区间if(k<r) x*=a[k+1];dp[l][r]=max(dp[l][r],dp[l][k-1]+dp[k+1][r]+x);}}}cout<<dp[1][n];
}
signed main(){ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);int T=1;while(T--){solve();}return 0;
}
http://www.dtcms.com/a/457609.html

相关文章:

  • Ventoy下载和安装教程(图文并茂,非常详细)
  • 无向图的回路检测(广度优先并查集)
  • 磁悬浮轴承损耗:深度解析损耗机理与降耗之道
  • AI大模型赋能药物研发:破解“双十困局”的跨界革命
  • 哲林高拍仪网站开发宁波南部商务区网站建设
  • 经典的逻辑函数化简算法 Espresso
  • ZKEACMS:基于ASP.Net Core开发的开源免费内容管理系统
  • 【QT常用技术讲解】opencv实现摄像头图像检测并裁剪物体
  • 深圳建网站哪个好网页设计实训总结3000字大学篇
  • 【密码学实战】openHiTLS mac命令行:消息认证码工具
  • 沙井网站建设石林县工程建设个体交易网站
  • Chromium 138 编译指南 - Android 篇:安装构建依赖项(七)
  • asp 绿色环保企业网站源码 v1.1golang 做网站
  • 第4章 C++多线程系统编程精要
  • 绵阳网站怎样做网站设计要交税吗
  • 同ip网站有什么影响网站建设论文500字
  • 基于springboot的家具商城销售系统
  • 手机版网站制作佛山建站软件
  • 厦门南希网站建设微信应用程序开发
  • 【STM32项目开源】基于STM32的智能厨房火灾燃气监控
  • 最新彩虹云商城二开Pro美化版 新增超多功能 全开源
  • 如何制作家具网站东莞设计网站建设方案
  • 商丘做网站的电话怎样建网站最快
  • 安徽住房与城乡建设部网站网站登记备案 个人
  • 嵌入式开发--温度、湿度、气压传感器BME280
  • 基于ZYNQ FPGA+AI+ARM 的卷积神经网络加速器设计
  • 自助建站之星wordpress图片弹出
  • JavaScript-防抖与节流
  • 广西南宁网站建设哪家好网站调用微信数据
  • 专业手机网站建设公司排名wordpress the7打开速度慢