首页 > 其他分享 >[笔记]石子合并问题整理(更新中)

[笔记]石子合并问题整理(更新中)

时间:2024-04-03 22:24:42浏览次数:20  
标签:310 210 int 石子 无环 更新 len 笔记 sim

[Contents]

  • 无环,朴素算法,\(O(n^3)\)
  • 有环,朴素算法,\(O(n^3)\)
  • GrsiaWachs、四边形不等式优化

无环,朴素算法,\(O(n^3)\)

例题:P1775 石子合并(弱化版)

用\(f[i][j]\)表示\(i\sim j\)的最小得分,枚举长度\(len=2\sim n\),对于每个长度,枚举左端点\(l\),算出右端点\(r\),然后再枚举从分割位置\(k=l\sim r-1\),注意需要前缀和维护一下区间和。

\(f[l][r]=min(f[l][r],f[l][k]+f[k+1][r]+a[r]-a[l-1])\)。

点击查看代码
#include<bits/stdc++.h>
using namespace std;
int n,a[310],dp[310][310];
int main(){
	cin>>n;
	for(int i=1;i<=n;i++) cin>>a[i],a[i]+=a[i-1];
	for(int len=2;len<=n;len++){
		for(int l=1;l+len-1<=n;l++){
			int r=l+len-1;
			dp[l][r]=INT_MAX;
			for(int k=l;k<r;k++){
				dp[l][r]=min(dp[l][r],dp[l][k]+dp[k+1][r]+a[r]-a[l-1]);
			}
		}
	}
	cout<<dp[1][n];
	return 0;
}

有环,朴素算法,\(O(n^3)\)

例题:P1880 [NOI1995] 石子合并

把\(a\)重复一次接到末尾,长度就是\(2n\),此时可以转化为无环的做法。\(len\)还是\(2\sim n\),但是\((l,r)\)区间最多可以延伸到\(2n\)。最终求出\(max(f[1][n],f[2][n+1],f[3][n+2],…,f[n-1][2n])\)即可,\(min\)同理。

点击查看代码
#include<bits/stdc++.h>
using namespace std;
int n,a[210];
int dp[210][210],dp2[210][210];
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		a[n+i]=a[i];
	}
	for(int i=1;i<=2*n;i++) a[i]+=a[i-1];
	for(int len=2;len<=n;len++){
		for(int l=1;l+len-1<=2*n;l++){
			int r=l+len-1;
			dp[l][r]=INT_MIN;
			dp2[l][r]=INT_MAX;
			for(int k=l;k<r;k++){
				dp[l][r]=max(dp[l][r],dp[l][k]+dp[k+1][r]+a[r]-a[l-1]);
				dp2[l][r]=min(dp2[l][r],dp2[l][k]+dp2[k+1][r]+a[r]-a[l-1]);
			}
		}
	}
	int maxx=INT_MIN,minn=INT_MAX;
	for(int i=1;i<=n;i++){
		maxx=max(maxx,dp[i][i+n-1]);
		minn=min(minn,dp2[i][i+n-1]);
	}
	cout<<minn<<endl<<maxx;
	return 0;
}

标签:310,210,int,石子,无环,更新,len,笔记,sim
From: https://www.cnblogs.com/Sinktank/p/18113596

相关文章

  • 【机器学习2021-李宏毅】学习笔记(一)
    基本概念结构化学习机器学习中的任务不只包括Regression和Classification两大类,还有StructureLearning,也就是函数的输出并不是一个标量或者一个类别,而是生成有结构的输出(比如图像、文本等)。误差曲面通过试不同的参数,然后计算对应情况下的loss,画出来的等高线图称为ErrorSurfa......
  • EF Core 高效更新
    高效更新本文内容批处理在相关情况下使用ExecuteUpdate和ExecuteDelete批处理EFCore通过在一次往返中自动将所有更新批处理在一起,帮助最大限度地减少往返。考虑以下情况:C#复制varblog=context.Blogs.Single(b=>b.Url=="http://someblog.microsoft.com");blog.Url......
  • 实用 Linux 命令 Windos 命令 实例演示 持续更新中
    实用Linux命令Windos命令实例演示持续更新中目录实用Linux命令Windos命令实例演示持续更新中Linux命令【Command[options][local]命令参数路径】命令对照WindowsLinuxLinux命令【Command[options][local]命令参数路径】**对于命令参数记忆......
  • 拼多多虚拟项目:入门到精通,开一个月入万把块的店铺 真不难(24年更新)
    拼多多虚拟项目:三两句话解决选品难,一个方法判断产品容不容易被投诉,产品会不会被起诉(简单、粗暴、好用)做虚拟电商项目,卖什么最安全?有人可能会说卖素材。因为素材都是没有版权的,不会被投诉更不会被起诉。但,我可以很负责任的告诉你,素材照样有版权。即使是一张图片,一个PSD源文......
  • 轻松玩转书生·浦语大模型趣味 Demo——day2笔记
    本节课有四个任务:学习部署、玩角色扮演的agent项目,玩数学运算agent、玩写作agent 主要学习过程就是跟着视频,复制学习文档里的资料,完成demo的使用。主要目的是熟悉开发平台。视频:轻松玩转书生·浦语大模型趣味Demo_哔哩哔哩_bilibili资料:Tutorial/helloworld/hello_world.......
  • spring-5学习笔记
    Spring5-2023/08/23(稍后更新6)01初识Spring1.1简介Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。Spring是一个轻量级控制反转(IoC)和面向切面(AOP)的容器框架历史:2002,首次推出了Spring框架的雏形:interface21......
  • 去年更新了显卡,今年更新下显示器呀
    京东真是个不好的地方,最近几年在它那里买了五台显示器了,都是退货的下场。不是亮点坏点就是缺个螺丝什么的,退换货机制的松散和退换货后商品的回流真的是京东亟待解决的大问题。在ROG的PG27UQR-W/LG的27GP95R/SAMSUNG的S34BG850SC之间做了选择,家里人和我都更喜欢21:9的带鱼,所以最后......
  • React 19 新特性 – 附带代码示例的更新
    ReactJS是前端开发世界中最流行的UI库之一。我喜欢React的原因之一就是它背后的团队以及社区对它的热情。当社区提出对新功能和改进的需求时,团队会倾听。React的未来令人兴奋而有趣。如果我必须用一句话来总结,我会说这几乎概括了一切:“少写代码,多实现功能。”在本文中,我......
  • 06 MySQL数据操作DML---插入insert、删除delete、更新update、查询select
    DML是指数据操作语言,用来对数据库中表的数据记录进行更新插入insert向表中指定字段插入数据insertinto表名(字段名1,字段名2,字段名3,...)values(字段名1值,字段名2值,字段名3值,...)INSERTintomy_student(id,`name`,age)values(2,'Jack',12);字段列表不一定非要......
  • 电信aep—Ctwing平台使用笔记——mqttfx接入电信aep实现数据上传、命令下发。
    最近搞了电信平台,记录一下目录1.创建产品2.添加设备3.记录以下信息4.打开mqttfx​编辑5.试试​编辑6.建立属性7.建立服务8.打开mqttfx,输入主题与报文9.上传10指令下发1.创建产品2.添加设备3.记录以下信息4.打开mqttfx参数填写规则:1.BrokerAddress:从设......