首页 > 其他分享 >删数问题

删数问题

时间:2023-08-28 10:45:37浏览次数:26  
标签:得分 删除 int 样例 问题 删数 1010 dp

问题描述

现有\(n\)个正整数组成的序列\(a\),从中删除一个数,得分是其本身同左、右相邻的数的乘积,
然后再在剩余的整数中继续删除,注意序列两端的数字a1和an是不能删除的,求这样删除\(n-2\)个整数后的最大得分。

例如有四个数\(3 、4、5、6\),按照先\(4\)后\(5\)的删除顺序,其得分为\(345+356=150\),
按照先\(5\)后\(4\)的删除顺序,其得分为\(456+346=192\),因此最大得分为\(192\)。

输入格式

第一行一个整数\(n\)

接下来\(n\)个正整数表示序列\(a\)

输出格式

一个正整数表示删除\(n-2\)个整数后的最大得分

样例

样例输入1

4
3 4 5 6

样例输出1

192

样例输入2

5
3 6 7 8 2

样例输出2

528

解析

问题分析

一个典型的区间动规。

状态:
\(dp[i][j]\)表示第\(i\)个数字到第\(j\)个数字,假设最后删掉\(k\)个数得到的结果最大

状态转移方程:

\[dp[i][j]=dp[i][k]+dp[k][j]+a[i]×a[k]×a[j]; \]

对于第\(i\)个物品到第\(j\)个物品,假设最后删掉\(k\)得到的结果最大,那么最后一次删除时,得到的分数就是 \(a[i] × a[k] × a[j]\)。那么总的得分就是需要加上之前删掉\(k\)的左右两边除了\(i,j\)之外所有数的和,即\(dp[i][j]\) 的两个子问题,分别是\(dp[i][k]\) 和\(dp[k][j]\)。由此便可得出上面所写的状态转移方程

代码

C++

#include <bits/stdc++.h>
using namespace std;

int a[1010];//用来保存序列 
int dp[1010][1010];//i、j用来保存删除第i个数到第j个数所得到的最优值 
int main()
{
	int n;
	cin >> n;
	for(int i=1;i<=n;i++)
	{
		cin >> a[i];
	}
	for(int r=3;r<=n;r++)
	{
		for(int i=1;;i++)
		{
			int j=i+r-1;
			for(int k=i+1;k<=j-1;k++)
			{
				dp[i][j]=max(dp[i][j],dp[i][k]+dp[k][j]+a[i]*a[k]*a[j]);
			}
			if(j>=n) 
			{
				break;
			}
		}
	} 
	cout << dp[1][n];
	return 0;
} 

标签:得分,删除,int,样例,问题,删数,1010,dp
From: https://www.cnblogs.com/momotrace/p/nonumproblem.html

相关文章

  • SpringMVC3的ResponseBody返回字符串乱码问题解决
    SpringMVC的@ResponseBody注解可以将请求方法返回的对象直接转换成JSON对象,但是当返回值是String的时候,中文会乱码 原因是因为其中字符串转换和对象转换用的是两个转换器,而String的转换器中固定了转换编码为"ISO-8859-1" 网上也很多种解决方法,有通过配置Bean编码的,也有自己重写转......
  • 用P3P解决IE的iframe中每次跨域请求产生新session的问题
    初来乍到,看到一篇cookie夸域的帖子,觉的他只是解决了跨二级域名的问题,自己曾经作过一个企业应用的sso,其中用到的p3p解决了cookie跨域的存取。 第一次发帖,请各位高手多多指教 首先介绍第一方Cookie和第三方cookie: 第一方Cookie是来自当前正在查看的网站,或者发送到当前正在查看的......
  • Java面试题:顺序锁和轮询锁解决死锁问题
    (目录)死锁(DeadLock)示例两个线程线程1:先获取锁A,再获取锁B线程2:先获取锁B,再获取锁Apackagecom.example.demo;publicclassDeadLockExample{publicstaticvoidmain(String[]args){ObjectlockA=newObject();//创建锁AObjectlockB=n......
  • linux学习指令与现有环境解决问题笔记
    linux学习指令与现有环境笔记注意:我将pytorch和cuda安装在了pytorch这个虚拟环境中pytorch安装及注意问题注意版本对应,稳定版2.0.1对应cuda11.7,别按错了按错导致重新安装cuda安装过程与对应问题注意上述内容,里面告诉了添加环境变量,如何删除cuda,cuda下载的位置,下载对应驱动......
  • 性能测试-磁盘-磁盘问题场景分析
    目录1、磁盘命令iostat-dx210-查看磁盘读写的扩展数据,2s采集一次,采集10次2、磁盘性能指标3、清除缓存命令 4、测试磁盘写速度步骤-跑多次 5、测试磁盘的读速度正文1、磁盘命令iostat-dx210-查看磁盘读写的扩展数据,2s采集一次,采集10次安装命令yuminstallsy......
  • 因为一台NUC怒学两天网络排查问题
    起源鄙人曾经认为自己不会乱花钱,第一个月工资发下来就上海鲜市场整了一台NUC,真香~我给它装了个archlinux,由于太菜,直接用了开源的GUIInstaller,我每天把它带到公司,带回家,贼喜欢。但是我发现,在公司的时候,无论如何也没法让我的macbookssh到arch上,它们连接了同一个wifi网络,在同一......
  • QA From TinyRenderer&TinyRenderer问题汇总
    最近在学习TinyRenderer这个库,包括学习这个库本身的wiki以及一些知乎上的内容。遇到的问题在这里记录一下。git:https://github.com/xkyl-yhw/SoftRenderer库文件混乱,使用的版本不同.以及函数不统一的问题比较经典的就是本身tinyrenderer在一开始教学为了区分vec和vec,于是就有一......
  • Doris启动BE时于是遇到的问题
    Doris启动BE时于是遇到的问题java.net.ConnectException:拒绝连接(Connectionrefused)配置文件中ip地址输入错误,导致无法访问,检查后修改即可sudovi/opt/module/apache-doris-0.15.0/be/conf/be.confBE启动后通过Mysql客户端查看状态时,alive=false,获取不到节点情况......
  • 线性基与图论结合的经典问题
    立体传送门:LuoguP4151不急,一步一步来。第一种情况,考虑我们现在已经有一条\(1->n\)的路径,不妨设为\(1->i->j->k->n\),异或起来为\(dis_n\),那么我们的\(ans\)就是\(dis_n\)。第二种情况,在上种情况基础上,考虑这条路径上的\(i\)点有个环,不妨设这个环的异或起来为\(I\),那......
  • 解决wsl正确安装torch_sparse、torch_scatter的问题
    快速解决torch_sparse、torch_scatter安装并正确使用的问题我们如果直接进行pipinstall后,会因为pip的机制自动下载最新版本的其他依赖,例如torch等cuda版本。所以我们需要找到对应自己电脑的cuda版本的模块whl,进行离线安装。找到对应版本打开https://pytorch-geometric.com/wh......