[区间DP]洛谷P1063 能量项链

2023-05-16

目录

  • 题意
  • 样例
    • 样例输入:
    • 样例输出:
  • 思路
  • 总结
  • 代码

题意

在这里插入图片描述

样例

样例输入:

在这里插入图片描述

4
2 3 5 10

样例输出:

在这里插入图片描述

710

思路

1.经典区间DP题 算是合并石子的变种 只不过由一个点变成了一个区间
不过我们也可以用结构体存储 当做一个点来看
dp[l][r]表示区间[l,r]能释放的最大能量和
则dp[l][r]可通过子区间dp[l][k]和dp[k+1][r]合并得到 (l<=k<r)
再加上两个子区间合并释放的能量即可

2.由于是一个环 需要拆环为链
即将n扩展为2*n-1
最后答案在max(dp[i][n+i-1]) (1<=i<=n) 中


总结

经典的区间DP题
需要理解先枚举区间长度 再枚举左端点来确定子区间的思想
注意遇到链时 要拆环为链


代码

#include<iostream>
#include<string.h>
#include<string>
#include<algorithm>
#include<math.h>
#include<stdio.h>
#include<queue>
#define MAXN 100010
#define INF 0x7ffffff
#define ll long long
using namespace std;
int n;
struct node
{
    int left,right;
}a[2010];
int b[1000];
int dp[1000][1000];//dp[l][r]表示区间[l,r]能取得的最大能量
int main()
{
    cin>>n;
    int first=0;
    for(int i=1;i<=n;i++)   cin>>b[i];
    for(int i=1;i<n;i++)   a[i].left=b[i],a[i].right=b[i+1];
    a[n].left=b[n];a[n].right=b[1];
    for(int i=1;i<=n;i++)   a[n+i].left=a[i].left,a[n+i].right=a[i].right;

    for(int len=2;len<=n;len++)
        for(int i=1;i<=2*n-1-len+1;i++)
        {
            int l=i,r=i+len-1;
            for(int k=l;k<r;k++)
                dp[l][r]=max(dp[l][r],dp[l][k]+dp[k+1][r]+a[l].left*a[k].right*a[r].right);
        }
    int ans=0;
    for(int i=1;i<=n;i++)   ans=max(ans,dp[i][n+i-1]);
    cout<<ans<<endl;
    system("pause");
    return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[区间DP]洛谷P1063 能量项链 的相关文章

  • 图的基本存储的基本方式一

    这个题主要的是这个 stdbool h 这个函数 xff0c 还有bool这个数组 Problem Description 解决图论问题 xff0c 首先就要思考用什么样的方式存储图 但是小鑫却怎么也弄不明白如何存图才能有利于解决问题 你能
  • 图的基本存储的基本方式四

    一直不知道这个题为什么用链表可以A xff0c 但是结构体就会WA xff0c 如果有童鞋们知道 xff0c 希望能留下想法 xff0c 一起学习 xff0c 一起进步 Problem Description 解决图论问题 xff0c 首先
  • C# 超详细的WebService创建、发布与调用(VS2019)

    1 编写接口 这里我选择的是 ASP NET Web应用程序 NET Framework 填写好项目名称 选择项目位置以及所使用的框架 xff0c 这里我用的是 NET Framework 4 框架 xff0c 然后点击创建 继续点击创建
  • 图的基本存储的基本方式三

    图的基本存储的基本方式三 Problem Description 解决图论问题 xff0c 首先就要思考用什么样的方式存储图 但是小鑫却怎么也弄不明白如何存图才能有利于解决问题 你能帮他解决这个问题么 xff1f Input 多组输入 xf
  • 数据结构实验之栈与队列九:行编辑器

    数据结构实验之栈与队列九 xff1a 行编辑器 Problem Description 一个简单的行编辑程序的功能是 xff1a 接受用户从终端输入的程序或数据 xff0c 并存入用户的数据区 由于用户在终端上进行输入时 xff0c 不能保
  • 顺序表应用2:多余元素删除之建表算法

    顺序表应用2 xff1a 多余元素删除之建表算法 Time Limit 3 ms Memory Limit 600 KiB Submit Statistic Problem Description 一个长度不超过10000数据的顺序表 xf
  • 数据结构实验之链表四:有序链表的归并

    数据结构实验之链表四 xff1a 有序链表的归并 Problem Description 分别输入两个有序的整数序列 xff08 分别包含M和N个数据 xff09 xff0c 建立两个有序的单链表 xff0c 将这两个有序单链表合并成为一个
  • 数据结构实验之链表五:单链表的拆分

    数据结构实验之链表五 xff1a 单链表的拆分 Problem Description 输入N个整数顺序建立一个单链表 xff0c 将该单链表拆分成两个子链表 xff0c 第一个子链表存放了所有的偶数 xff0c 第二个子链表存放了所有的奇
  • 数据结构——二叉树的基本操作(不包括还原)

    小编没有写主函数 xff0c 你们需要用什么函数只需要自己写一个主函数调用一下就可以了 include lt stdio h gt include lt string h gt include lt stdlib h gt typedef
  • 数据结构实验之图论四:迷宫探索

    数据结构实验之图论四 xff1a 迷宫探索 Time Limit 1000 ms Memory Limit 65536 KiB Problem Description 有一个地下迷宫 xff0c 它的通道都是直的 xff0c 而通道所有交叉
  • 数据结构实验之图论七:驴友计划

    数据结构实验之图论七 xff1a 驴友计划 Time Limit 1000MS Memory Limit 65536KB Problem Description 做为一个资深驴友 xff0c 小新有一张珍藏的自驾游线路图 xff0c 图上详
  • 数据结构实验之排序一:一趟快排

    H 数据结构实验之排序一 xff1a 一趟快排 Problem Description 给定N个长整型范围内的整数 xff0c 要求输出以给定数据中第一个数为枢轴进行一趟快速排序之后的结果 Input 连续输入多组数据 xff0c 每组输入
  • 数据结构实验之排序二:交换排序

    include lt stdio h gt int s x void qsort int a int l int h int i 61 l j 61 h k 61 a l while i gt 61 j return while i lt
  • vs当前不会命中断点,还未为文档加载符号

    一般网上的解决办法是 xff1a A 工具 选项 调试 常规中的 要求源文件和原始版本完全匹配 的勾去掉 B 工具 选项 调试 常规中的 启用仅我的代码 的勾去掉 这种是治标不治本 xff0c 有的时候也不起作用 当前不会命中断点 xff0
  • 数据结构实验之排序三:bucket sort

    数据结构实验之排序三 xff1a bucket sort 作为桶排序的典型例题 xff0c 我们完全可以按照桶排序的思想来做这个题 但是本题完全不需要用太多的空间去换时间 xff0c 只需要一个空间为101的一维数组就好 Problem D
  • 数据结构实训——停车场系统

    这个程序是利用栈和循环队列实现的 xff0c 自己得先处理好逻辑关系就好了 由于题目没有要求 xff0c 这个程序就没加重复判断 xff0c 比如一辆车已经停在车位上或者便道上 xff0c 再来一辆就判断不了了 关于栈 xff0c 就是先进
  • 关于在linux下监测内存泄漏的问题

    小伙伴们 xff0c 会不会时常注意自己的程序会不会有内存泄漏的问题 xff1f 分享一个工具 1 安装valgrind 1 xff09 将安装包valgrind 3 8 1 9 el6 i686 rpm拷贝到虚拟中 2 xff09 yum
  • 计算机组成原理第二章测试题

    1 在定点机中执行算术运算时会产生溢出 xff0c 其原因是 C A 运算过程中最高位产生了进位或借位 B 参与运算的操作数超出了机器的表示范围 C 运算结果的操作数超出了机器的表示范围 D 寄存器的位数太少 2 某机器字长32位 xff0
  • MySQL操作语言汇总

    创建表数据 create table 表名 字段名 数据类型 约束条件 xff0c xff1b xff08 其中约束条件可选 xff09 注意 xff1a 1 必须给定表名 xff0c 且不能使用SQL语言中的关键字 2 必须给字段命名 x

随机推荐

  • 数据库第三次实验

    lt 实验要求 gt 每次实验前学生必须根据实验内容认真准备 在指导教师的帮助下能够完成实验内容 实验结束后总结实验内容 书写实验报告 遵守实验室规章制度 不缺席 实验学时内必须做数据库的有关内容 xff0c 不允许上网聊天或玩游戏 lt
  • 数据库第二次实验

    lt 实验要求 gt 每次实验前学生必须根据实验内容认真准备 在指导教师的帮助下能够完成实验内容 实验结束后总结实验内容 书写实验报告 遵守实验室规章制度 不缺席 实验学时内必须做数据库的有关内容 xff0c 不允许上网聊天或玩游戏 lt
  • 数据库第一次实验

    实验题目 xff1a 认识 DBMS xff08 Oracle xff09 xff0c SQL 数据定义功能实验目的 xff1a 理解数据库模式的概念 xff0c 通过使用 Oracle 的客户端 Oracle OraClient10g h
  • orcl的Windows下的配置

    理解数据库模式的概念 xff0c 通过使用 Oracle 的客户端 Oracle OraClient10g home1 Enterprise Manager Console 建立基本表 xff0c 实现模式对象与用户名之间的关联 熟悉 En
  • 数据库在线测试

  • WSL修改默认安装目录到其他盘eg d:

    1 查看WSL分发版本 在Windows PowerShell中输入如下命令 wsl l all v NAME STATE VERSION Ubuntu 18 04 Running 2 docker desktop Running 2 do
  • iOS 简单的贝塞尔(UIBezierPath)曲线使用

    在iOS中绘制矢量图或者路径的时候通常会用到 UIBezierPath xff0c 它在 UIKit 中 xff0c 是CoreGraphics对path的封装 使用 UIBezierPath xff0c 可以绘制直线 椭圆 多边形和贝塞尔
  • OpenStack计费服务Cloudkitty分析 计费核心(二)

    计费模型是实现计费的核心 xff0c 一般能允许用户根据实际需求设定计费规则并且根据收集到资源数据进行准确的费用计算 Cloudkitty实现了多种计费模型noop xff0c hashmap和pyscripts xff0c 允许同时启动多
  • 跳表的动态演示

    跳表的动态演示 插入操作 删除操作 xff1a 查询操作 xff1a
  • [模拟/模拟/有技巧的搜索] csp第一次模拟

    目录 题目一 咕咕东的奇遇题意样例思路总结代码 题目二 咕咕东想吃饭题意样例思路总结代码 题目三 可怕的宇宙射线题意样例思路总结代码 题目一 咕咕东的奇遇 题意 有一个如图所示的圆环 xff0c 初始时指针指在a处 给定一个字符串 xff0
  • [单调栈/差分/尺取/单调队列]Exercise Week5 A最大矩形+B魔法猫+C平衡字符串+D滑动窗口

    目录 A 单调栈 最大矩形题意样例思路总结代码 B 差分 TT 39 s Magic Cat题意样例思路总结代码 C 尺取 平衡字符串题意样例思路总结代码 D 单调队列 滑动窗口题意样例思路总结代码 A 单调栈 最大矩形 题意 给一个直方图
  • [树的直径/并查集/最小生成树/最小瓶颈生成树]Exercise Week6 A+B+C+D

    目录 A 树的直径 氪金带东题意样例思路总结代码 B 并查集 戴好口罩 xff01 题意样例思路总结代码 C 最小生成树 掌握魔法 东东题意样例思路总结代码 D 最小瓶颈生成树 数据中心题意样例思路总结代码 A 树的直径 氪金带东 题意 实
  • [差分约束/拓扑排序/kosaraju缩点]Exercise Week8 A+B+C

    目录 A 差分约束 区间选点 题意样例样例输入 xff1a 样例输出 思路总结代码 B 拓扑排序 猫猫向前冲题意样例样例输入 xff1a 样例输出 xff1a 思路总结代码 C SCC缩点 区间选点 题意样例样例输入 xff1a 样例输出
  • [大模拟]Test Week8 二阶魔方

    目录 大模拟 东东玩二阶魔方题意d样例样例输入 xff1a 样例输出 思路总结代码 B 模拟 ST串题意样例样例输入 xff1a 样例输出 xff1a 思路总结代码 大模拟 东东玩二阶魔方 题意d 东东有一个二阶魔方 xff0c 即2 2
  • [大模拟]Test Week14 猫睡觉问题

    目录 大模拟 猫睡觉问题题意样例样例输入 xff1a 样例输出 思路总结代码 大模拟 猫睡觉问题 题意 众所周知 xff0c TT家里有一只魔法喵 这只喵十分嗜睡 一睡就没有白天黑夜 喵喵一天可以睡多次 xff01 xff01 每次想睡多久
  • [区间DP/状压DP]Exercise Week12 A~E

    目录 A 水 找数题意样例样例输入 xff1a 样例输出 思路总结代码 B BFS 逃离题意样例样例输入 xff1a 样例输出 xff1a 思路总结代码 C DP 扫楼题意样例样例输入 xff1a 样例输出 思路总结代码 D 区间DP 最长
  • 新的开始( [USACO08OCT]打井Watering Hole)

    新的开始 newstart pas c cpp 题目描述 话说小 FF 在经历了上次 寻找古代王族遗产 的探险后 xff0c 成为了世界上最伟大的探险 家并拥有了一大笔财富 当然他不能坐吃山空 xff0c 必须创造财富 xff01 xff0
  • UOS配置本地APT源和外部软件包

    root 64 skill PC mount dev sr0 mnt mount mnt WARNING device write protected mounted read only root 64 skill PC vi etc ap
  • [二分答案] 洛谷P1873 砍树

    目录 题意样例样例输入 xff1a 样例输出 思路总结代码 题意 伐木工人米尔科需要砍倒M米长的木材 这是一个对米尔科来说很容易的工作 xff0c 因为他有一个漂亮的新伐木机 xff0c 可以像野火一样砍倒森林 不过 xff0c 米尔科只被
  • [区间DP]洛谷P1063 能量项链

    目录 题意样例样例输入 xff1a 样例输出 思路总结代码 题意 样例 样例输入 xff1a 4 2 3 5 10 样例输出 710 思路 1 经典区间DP题 算是合并石子的变种 只不过由一个点变成了一个区间 不过我们也可以用结构体存储 当