ADV-229 合并石子 —— 区间dp引申(java)

JAVA算法:合并石子堆——JAVA版本算法(动态规划算法) JAVA算法:合并石子堆——JAVA版本算法(动态规划算法) 在一个圆形操场的四周摆放着n堆石子(n<= 100),现要将石子有次序地合并成一堆。规定每次只能选取相邻的两堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分。 请编写算法,读入石子堆数n及每堆的石子数(<=20)。选择一种合并石子的方案,使得做n-1次合并,得分的总和最小。 例如:有4堆石子:4 4 5 9 ... 阅读详情


import java.util.Scanner;

public class Main {
	static int[] stone;
	static int[][] dp;
	static int[] sum;

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		stone = new int[n + 1];
		dp = new int[n + 1][n + 1];
		sum = new int[n + 1];
		for (int i = 1; i <= n; i++) {
			stone[i] = sc.nextInt();
			sum[i] = sum[i - 1] + stone[i];
			dp[i][i] = 0;
		}

     //区间dp
		for (int len = 1; len < n; len++) {
			for (int i = 1; i <= n-len; i++) {
				int j = i + len;
				dp[i][j] = Integer.MAX_VALUE;
				for (int k = i; k < j; k++) {
					dp[i][j] = Math.min(dp[i][j], dp[i][k] + dp[k + 1][j]);
				}
				dp[i][j] += sum[j] - sum[i - 1];
			}
		}
		System.out.println(dp[1][n]);
	}
}



备忘:日后详更思路。(最近真的时间不够用aaaa,forgive me.)

计蒜客 沙子的质量 区间dp(Java版) 题目链接:https://nanti.jisuanke.com/t/254 设有N堆沙子排成一排,其编号为1,2,3,…,N(N&lt; =300)。每堆沙子有一定的数量,可以用一个整数来描述,现在要将这N堆沙子合并成为一堆,每次只能合并相邻的两堆,合并的代价为这两堆沙子的数量之和,合并后与这两堆沙子相邻的沙子将和新堆相邻,合并时由于选择的顺序不同,合并的总代价也不相同,如有4堆沙子分别为 1 ... 阅读详情

相关推荐

蓝桥杯 算法提高 合并石子

算法提高 合并石子   时间限制:2.0s   内存限制:256.0MB      问题描述   在一条直线上有n堆石子,每堆有一定的数量,每次可以将两堆相邻的石子合并,合并后放在两堆的中间位置,合并的费用为两堆石子的总数。求把所有石子合并成一堆的最小花费。 输入格式   输入第一行包含一个整数n,表示石子的堆数。   接下来一行,包含n个整数,按顺序

Java识堂,一个有干货的微信公众号 3331

[蓝桥杯][算法提高 ADV-229]合并石子(java)(动态规划)九十分,思路正确,超时

算法提高 合并石子 时间限制:2.0s 内存限制:256.0MB 问题描述   在一条直线上有n堆石子,每堆有一定的数量,每次可以将两堆相邻的石子合并,合并后放在两堆的中间位置,合并的费用为两堆石子的总数。求把所有石子合并成一堆的最小花费。 输入格式   输入第一行包含一个整数n,表示石子的堆数。   接下来一行,包含n个整数,按顺序给出每堆石子的大小 。 输出...

凉月的博客 736

动态规划之石子合并一(Java 版本)

题目描述 有N堆石子排成一排,每堆石子有一定的数量。现要将N堆石子并成为一堆。合并的过程只能每次将相邻的两堆石子堆成一堆,每次合并花费的代价为这两堆石子的和,经过N-1次合并后成为一堆。求出总的代价最小值。 输入 有多组测试数据,输入到文件结束。 每组测试数据第一行有一个整数n,表示有n堆石子。 接下来的一行有n(0< n <200)个数,分别表示这n堆石子的数目,用空格隔开。 ...

autumn_leaf blog 3298

java---区间dp---石子合并(每日一道算法2022.10.15)

设有 NN 堆石子排成一排,其编号为 1,2,3,…,N 每堆石子有一定的质量,可以用一个整数来描述,现在要将这 N 堆石子合并成为一堆 每次只能合并相邻的两堆,合并的代价为这两堆石子的质量之和,合并后与这两堆石子相邻的石子将和新堆相邻,合并时由于选择的顺序不同,合并的总代价也不相同

SRestia的博客 856

andrew ng cs229机器学习 notes

cs229机器学习 英文讲义,notes for cs229 Stadnford machine learning lecture

石子合并问题可运行Java源码

石子合并问题可运行Java源码,下载到Eclipse就可以运行了。 要求在工程根目录下有input.txt文件,结果output.txt会生成在相同目录下

【dp】【动态规划】【蓝桥杯】

题目1.和谐宿舍2 1.和谐宿舍2 蓝桥杯 算法提高 ADV-298 和谐宿舍2 题目:http://lx.lanqiao.cn/problem.page?gpid=T575 package 练习; import java.util.Scanner; public class _298和谐宿舍2 { public static void main(String[] args) { //输入 Scanner in = new Scanner(System.in); int n,m; n=

m0_45682738的博客 433

石子合并问题JAVA源代码

在一个圆形操场的四周摆放着n 堆石子。现要将石子有次序地合并成一堆。规定每次只 能选相邻的2堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的得分。试设计一 个算法,计算出将n堆石子合并成一堆的最小得分和最大得分。

蓝桥杯题库 算法提高非vip部分(C++、Java)代码实现(201-250)

文章目录ADV-205 拿糖果cpp:java:ADV-208 矩阵相乘cpp:java:ADV-215 Problem S4: Interesting Numbers 加强版cpp:java:ADV-217 c++_ch04_02_修正版cpp:java:ADV-218 递推求值cpp:java:ADV-219 组合公式求值java:ADV-221 7-1用宏求球的体积cpp:java:ADV-...

薛崇祥的博客 1074

保姆级教程:在S32DS 3.4上安装S32K3xx RTD 4.4驱动包(附常见安装失败排查)

本文提供在S32DS 3.4上安装S32K3xx RTD 4.4驱动包的详细教程,涵盖环境准备、分步安装指南及常见问题排查。特别针对NXP S32K3系列MCU开发者,解决网络问题、路径配置等安装难点,并分享进阶配置技巧和最佳实践,助力高效开发。

weixin_42696271的博客 289

ue4 角色奔跑/冲刺/蹲下 /蹲走 动作切换蓝图

序列:文章分为4部分: 一、准备工作+简单的蓝图连线 二、编写“行走” 混合空间 三、编写“蹲下”混合空间 四、合成2个动画,设置动画蓝图 —————————————— 一、准备工作 下载“动画初学者包”,添加到项目! 主要文件: 打开BP_playerCharacter,组价——添加组件,找到“摄像机”,“机臂” 没有找到就去其他项目复制过来 ———————————— 手写人物的移动,也可以在...

凉城古梦猫扑街的博客 4863

区间DP小结(附经典例题)

——这篇文章主要想总结下区间DP的经典题目,同时给自己复习巩固这方面知识点。 区间DP 一、定义 区间DP,顾名思义是在区间上DP,它的主要思想就是先在小区间进行DP得到最优解,然后再利用小区间的最优解合并求大区间的最优解。 二、实现思路 下面给出区间DP最简单形式的伪代码(具体要根据题目修改) //mst(dp,0) 初始化DP数组 for......

Dust_heart的博客 2万+

✨使用 vLLM + Docker 部署 Qwen3-Embedding-8B 并实现高效文本向量生成(附 `curl` 测试)

本文介绍了如何使用 vLLM 和 Docker 部署 Qwen3-Embedding-8B 嵌入模型服务,并通过标准 OpenAI 兼容接口进行调用和结果解析。如果你在部署中遇到任何问题,欢迎留言讨论!

用大模型重构生活:猫奴程序员的AI智能日常记录 6240

合并石子(区间DP)

【题目描述】 在一个操场上一排地摆放着N堆石子。现要将石子有次序地合并成一堆。规定每次只能选相邻的2堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的得分。 计算出将N堆石子合并成一堆的最小得分。 【输入】 第一行为一个正整数N (2≤N≤100); 以下N行,每行一个正整数,小于10000,分别表示第i堆石子的个数(1≤i≤N)。 【输出】 一个正整数,即最小得分。 【...

一身清贫怎敢入繁华 462

转义序列字符(\0,\n,\r,\t,\v,\a,\f,\b,\\,\‘,\“,\?)详解,转义字符对应的全称,输出结果和对应的ASCII码值详解;

转义序列字符(\0,\n,\r,\t,\v,\a,\f,\b,\\,\',\",\?)详解,转义字符对应的全称,输出结果和对应的ASCII码值详解;

南城花开过的博客 3万+

BUCK-BOOST升降压电路Multisim电路仿真分析

本文分析了三极管型BUCK-BOOST升降压开关电源的工作原理。该电路结合了BUCK降压和BOOST升压拓扑,通过控制三极管Q1的高频通断,使电感L1周期性储能和释能,实现输出电压可高于或低于输入电压且极性相反。详细阐述了Q1导通和关断阶段的工作过程,推导了输出电压与占空比的关系式Vo=-D/(1-D)*Vi,并分析了不同占空比下的工作模式(降压、升压)。通过Multisim仿真验证了理论分析,当D=25%时输出降压至1.6V,D=60%时输出升压至7.5V。电路具有升降压灵活、极性反转、效率高等特点,适用

XU157303764的博客 1436

石子合并 动态规划(直线型)

问题描述   在一条直线上有n堆石子,每堆有一定的数量,每次可以将两堆相邻的石子合并,合并后放在两堆的中间位置,合并的费用为两堆石子的总数。求把所有石子合并成一堆的最小花费。 输入格式   输入第一行包含一个整数n,表示石子的堆数。   接下来一行,包含n个整数,按顺序给出每堆石子的大小 。 输出格式   输出一个整数,表示合并的最小花费。 样例输入 5 1 2 3 4 5 样

only06的博客 1万+

[Python图像识别] 五十二.水书图像识别 (2)基于机器学习的濒危水书古文字识别研究

上一篇文章详细讲解如何利用数据增强方法实现图像数据集的扩充,并以濒危水书作为案例讲解。这篇文章将详细讲解基于机器学习的水书图像识别方法,以图像像素统计为特征开展图像分类讲解,这是最基础的方法,也为后续深度学习图像分类描述提供支撑。基础性文章,希望对您有所帮助!让我们开始吧,且看且珍惜。

杨秀璋的专栏 989

poj 3280(区间dp、java实现)

代码注释清晰,如果还不能理解请参考我的另一篇博客,链接: (详解)区间DP —— 平行四边形优化.,希望对你有所帮助!!! 题目信息: 描述 跟踪所有母牛可能是一项艰巨的任务,因此,农夫约翰(Farmer John)已安装了一个使它自动化的系统。他在每头奶牛上安装了一个电子ID标签,当奶牛经过扫描仪时,系统会读取该电子ID标签。各ID标签的内容目前单个字符串与长度中号(1≤ 中号 ≤2000)从的字母表字符绘制Ñ(1≤ Ñ ≤26)不同的符号(即,小写罗马字母)。 母牛是顽皮的动物,有时试图通过向后走来

一个很懒的人 435

【Power Compiler手册】4.saif文件

功耗计算的准确性取决于切换活动数据的准确性。这些数据是通过使用RTL仿真或门级仿真生成的,并存储在SAIF文件中。在执行功耗优化和分析之前,应该使用SAIF文件来反标设计对象上的切换活动信息。SAIF是由Synopsys支持的ASCII格式,用于促进不同Synopsys工具之间的信息交换(参见IEEE 1801标准,附录J)。使用`read_saif`命令读取SAIF文件,使用`write_saif`命令写出SAIF文件。有关更多信息,请参见`read_saif`和`write_saif`命令的手册页。

QRBQ 2187

ARFoundation系列讲解-教程目录

一、教程目录 ARFoundation快速入门-01简介 ARFoundation快速入门-02环境搭建 ARFoundation快速入门-03环境配置之iOS ARFoundation快速入门-04环境配置之Android ARFoundation快速入门-05ARKit设备支持列表 ARFoundation快速入门-06ARCore设备支持列表 ARFoundation快速入门-07检查设备支持 ARFoundation快速入门-08平面检..........

a451319296的博客 3万+

P1005 矩阵取数游戏(区间dp+java)

题目描述 帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的n \times mn×m的矩阵,矩阵中的每个元素a_{i,j}ai,j​均为非负整数。游戏规则如下: 每次取数时须从每行各取走一个元素,共nn个。经过mm次后取完矩阵内所有元素; 每次取走的各个元素只能是该元素所在行的行首或行尾; 每次取数都有一个得分值,为每行取数的得分之和,每行取数的得分 = 被取走的元素值\times 2^i...

Endeavor_G的博客 654

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

合并石子(3种算法)【DP】

&amp;amp;gt; Description 合并石子:就是一行石子,相邻的两堆可以合并在一起,所花费的值就是合并的总量数,直到把全部合并在一起。求最小花费值。 如图,方案一代价:10+9+19=38,方案二代价:5+11+19=35 &amp;amp;gt; Input 第一行为n,接下来n行为第n-1个石子的重量。 &amp;amp;gt; Output 输出最优值。 &amp;amp;gt; Sample Input 7 13 7

//(^ o ^)// 1551

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

石子合并问题2——区间DP

分析: 区间动规一般都是三层for循环,需要注意的是区间用从小到大, 因为动态规划就是后面的用到前面的出的结果递推后面的结果。 dp[i][j] 表示从第 i 堆合并到第 j 堆的最小代价,sum[i][j] 表示第 i 堆到第 j 堆的石子总和。 动态转移方程:dp[i][j] = min(dp[i][j], dp[i][k] + dp[k + 1][j] + sum[i][j]) (i...

dadaGuo的博客 435

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

蓝桥杯 算法提高 合并石子(Java解题)

问题描述  在一条直线上有n堆石子,每堆有一定的数量,每次可以将两堆相邻的石子合并,合并后放在两堆的中间位置,合并的费用为两堆石子的总数。求把所有石子合并成一堆的最小花费。输入格式  输入第一行包含一个整数n,表示石子的堆数。  接下来一行,包含n个整数,按顺序给出每堆石子的大小 。输出格式  输出一个整数,表示合并的最小花费。样例输入51 2 3 4 5样例输出33数据规模和约定  1&lt;=...

mcp3128 888
上一篇: P1605 迷宫 —— DFS
下一篇: P1040 加分二叉树 —— 树的遍历与区间dp引申
Plutoaaa
博客等级 码龄9年 64粉丝 99原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值