AcWing 320. 能量项链(环形区间DP)

news2024/12/24 21:11:31

AcWing 320. 能量项链(环形区间DP)

  • 一、 问题:
  • 二、分析:
  • 三、代码

一、 问题:

在这里插入图片描述

二、分析:

在讲解这道题之前,大家需要对线性区间DP和环形区间DP有一定的了解,因此如果不会这两个知识点的话,作者建议先去看一下作者之前写过的两篇文章:石子合并(分治+贪心+DP+前缀和)和AcWing 1068. 环形石子合并(环形区间DP)

在对这两个知识点都有了详细地了解之后,我们发现这道题唯一的区别就在于合并两堆石子的时候,吸收能量的方式并不是简单地相加。
除此以外和环形的区间DP是没有区别的。

而这道题的合并方式可以画成下面这个图的样子:
在这里插入图片描述

那么对于一个环上的能量而言,最终合并的效果又是什么样的呢?

在这里插入图片描述
根据合并的方式我们可以映射到我们的转移方程之中,通过和之前两篇文章中的转移方程进行对比,我们发现,这个转移方程有两处不同,一处是由于能量吸收方式造成的最后一项所加的数不再是前缀和,另外一个是我们之前的k和k+1,但是这里是两个k。

那么除了转移方程的不同,还有什么不同呢?

我们接着看:

在这里插入图片描述

那么转化成最终的序列A,B,C,D对吗?

如果这么表示的话,假设我们还是提前将A和B合并,C和D合并,那么最终合并这两大堆的时候,就成了A * C * D了。因此,我们需要将两个A拆出一个放在末尾。

在这里插入图片描述

这么表示的话,我们才能够代表环。

所以此时我们就需要去计算长度为n + 1的序列。

那么环变成链的方式和之前所提到的两篇文章中所写的一样,将两个序列拼在一起。

三、代码

#include<bits/stdc++.h>
using namespace std;
const int N = 210;
int f[N][N];
int a[N];
int main()
{
	int n;
	cin >> n;
	for(int i = 0; i < n; i ++ )
	{
		cin >> a[i];
		a[i + n] = a[i];
	}
	for(int len = 3; len <= n + 1; len ++ )
	{
		for(int l = 0; l + len - 1 < 2 * n; l ++ )
		{
			int r = l + len - 1;
			for(int k = l + 1; k < r; k ++ )
			{
				f[l][r] = max(f[l][r], f[l][k] + f[k][r] + a[l] * a[k] * a[r]);
			}
		}
	}
	int maxv = 0;
	for(int i = 0; i + n + 1 - 1 < 2 * n; i ++ )
	{
		int r = i + n + 1 -1;
		if(maxv < f[i][r])maxv = f[i][r];
	}
	cout << maxv << endl;
	return 0;
}

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

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

相关文章

SpringSecurity 安全框架详解

SpringSecurity 安全框架详解 1.简介 先赘述一下身份认证和用户授权&#xff1a; 用户认证&#xff08;Authentication&#xff09;&#xff1a;系统通过校验用户提供的用户名和密码来验证该用户是否为系统中的合法主体&#xff0c;即是否可以访问该系统&#xff1b;用户授权…

【JavaEE】文件操作IO之File 、InputStream、OutputStream 用法详解

目录 一、文件概念 &#xff08;1&#xff09;文件定义与组成 &#xff08;2&#xff09;文件的树形结构组织和目录 &#xff08;3&#xff09;文件路径 &#xff08;4&#xff09;文件分类 &#xff08;5&#xff09;文件操作 二、文件操作File类 &#xff08;1&…

20230202在AIO-3568J开发板在原厂Android12下增加ll命令

20230202在AIO-3568J开发板在原厂Android12下增加ll命令 2023/2/2 11:50 1、使用EVB2的DTS&#xff1a;rk3568-evb2-lp4x-v10.dts&#xff0c;ENG模式编译。没有ll命令&#xff01; console:/ $ console:/ $ ll /system/bin/sh: ll: inaccessible or not found 127|console:/ …

ESP-IDF:堆排序测试

堆排序测试 /堆排序测试/ void printheap (int arr[],int length) { for(int i0;i<length;i) { cout<<arr[i]<<" "; } cout<<endl; } void swapheap (int arr[],int a, int b) { int temp arr[a]; arr[a] arr[b]; arr[b] temp; } void he…

【数据库原理与SQL Server应用】Part04——数据库操作

【数据库原理与SQL Server应用】Part04——数据库操作一、数据库基本概念1.1 物理数据库1.1.1 页和区1.1.2 数据库文件1.1.3 文件组1.2 逻辑数据库1.3 SQL Server 的系统数据库和用户数据库1.4 报表服务器和报表数据库二、创建数据库2.1 管理工具界面方式创建数据库2.2 命令行方…

CSS列表与表格

目录 ​编辑 HTML 列表和 CSS 列表属性 不同的列表项目标记 实例 图像作为列表项标记 实例 定位列表项标记 实例 删除默认设置 实例 列表 - 简写属性 实例 设置列表的颜色样式 实例 更多实例 所有 CSS 列表属性 表格边框 实例 全宽表格 实例 双边框 合并…

【数据结构与算法】最小生成树 | 最短路径

&#x1f320;作者&#xff1a;阿亮joy. &#x1f386;专栏&#xff1a;《数据结构与算法要啸着学》 &#x1f387;座右铭&#xff1a;每个优秀的人都有一段沉默的时光&#xff0c;那段时光是付出了很多努力却得不到结果的日子&#xff0c;我们把它叫做扎根 目录&#x1f449;…

【图】邻接表存储图

目录 一、概念 图是什么 各种图的定义 二、图的存储结构 邻接矩阵 邻接表 代码实现邻接表存储图&#xff08;不含权重&#xff09; 一、概念 图是什么 图&#xff08;Graph)是由顶点的有穷非空集合和顶点之间边的集合组成&#xff0c;通常表示为:G(V,E)&#xff0c;其中…

Hystrix断路器执行原理

状态机 Hystrix断路器有三种状态,分别是关闭(Closed)、打开(Open)与半开(Half-Open),三种状态转化关系如下: Closed 断路器关闭:调用下游的请求正常通过Open 断路器打开:阻断对下游服务的调用,直接走 Fallback 逻辑Half-Open 断路器处于半开状态:SleepWindowInMi…

第 14 章python学习知识记录(一)

文章目录前言14.1 numpy的使用14.1.1 数字运算14.1.2 N维数组14.1.3 矩阵运算与广播14.1.4 元素访问14.2 Matplotlib的使用14.2.1 绘制简单图形14.2.2 绘制复杂图形14.2.3 显示图片14.3 os函数14.3.1 获取文件路径14.3.2 路径的基本操作14.4 tqdm的使用14.4.1 tqdm的导入和使用…

docker搭建hadoop和hive集群

一、安装docker并生成相关的镜像&#xff08;1&#xff09;安装docker安装docker教程https://www.runoob.com/docker/centos-docker-install.html只要在终端输入&#xff1a;sudo docker run hello-world后出现如下图的内容就证明安装docker成功了&#xff08;2&#xff09;拉取…

让HTTPS、SSH 共享端口的——工具SSLH

目录 安装 SSLH 配置 Apache 或 Nginx Web 服务器 配置 SSLH 测试 安装 SSLH sudo apt-get install sslh 配置 Apache 或 Nginx Web 服务器 编辑 Web 服务器&#xff08;nginx 或 apache&#xff09;配置文件并找到以下行&#xff1a; listen 443 ssl; 将其修改为&…

Uni-App 如何实现消息推送功能?

原文链接&#xff1a;Uni-App 如何实现消息推送功能&#xff1f; 前言 这里用的是uni-app自带的UniPush1.0&#xff08;个推服务&#xff09;&#xff0c;所以只针对UniPush1.0介绍实现步骤。 建议查阅的文章&#xff1a; UniPush 1.0 使用指南Unipush 常见问题 当然现在已…

Flink day01

Flink简介 Flink起源于Stratosphere项目&#xff0c;Stratosphere是在2010~2014年由3所地处柏林的大学和欧洲的一些其他的大学共同进行的研究项目&#xff0c;2014年4月Stratosphere的代码被复制并捐赠给了Apache软件基金会&#xff0c;参加这个孵化项目的初始成员是Stratosphe…

Flutter项目实战

1.Androidstudio 获取dart支持才会出现 下图&#xff0c;才可以单独运行 2.需要 flutter pub get 3.Android Studio 中使用 FlutterJsonBeanFactory 插件 注意点&#xff1a;需要保证该 Android Studio 窗口下是一个完整的Flutter项目&#xff08;窗口下有且仅有一个Flutter项目…

录音软件哪个好用?推荐3款亲测好用的录音软件

很多小伙伴不知道电脑如何录制声音&#xff1f;其实电脑录制声音很简单&#xff0c;借助一款好用录音软件&#xff0c;就可以轻松录制。那你知道录音软件哪个好用吗&#xff1f;小编平常的工作经常需要使用到录音软件。今天就给大家推荐3款亲测好用的录音软件&#xff0c;感兴趣…

k8s核心资源Service

1、介绍为一组pod&#xff08;一次部署&#xff09;统一暴露一个ip和端口&#xff0c;供外界访问。2、集群内对外统一暴露kubectl expose deploy <部署名> --port<对外暴露端口> --target-port<容器内部端口>kubectl expose deploy mynginx --port8000 --tar…

torch_geometric--Convolutional Layers

torch_geometric–Convolutional Layers 卷积层 MessagePassing 式中口口口表示可微的排列不变函数&#xff0c;例如: sum, mean, min, max 或者 mul 和 γΘ\gamma_{\Theta}γΘ​和ϕΘ\phi_{\Theta}ϕΘ​表示可微函数&#xff0c;例如 MLPs. 请参见这里的附带教程。 参数…

JDBC-BasicDAO

引入 之前的sql语句是固定的只能通过参数传入&#xff0c;要写那么多方法肯定不好弄 这就引出了DAO 这里是整个流程示意图 最下面开始说 就是mysql库的每一张表对应一个JavaBean 右边是我们获取和关闭连接的工具类 上面XXXDAO的意思是 每一个表&#xff0c;都有一个与之对应的D…

高压放大器在镓基液态金属微型马达驱动实验研究中的应用

实验名称&#xff1a;高压放大器在镓基液态金属微型马达驱动实验研究中的应用 研究方向&#xff1a;新型材料 测试目的&#xff1a; 微/纳马达虽然是一种以实际应用为基础的动力装置&#xff0c;但其在科学研究方面的价值也尤为重要。在微/纳米尺度下&#xff0c;它可以接受能量…