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

从零开始:小鼠Bulk RNA-seq全流程实战指南

本文提供了一份详尽的小鼠Bulk RNA-seq全流程实战指南,涵盖从软件环境搭建、原始数据质控与清洗、序列比对、基因定量到下游差异表达分析与功能富集。内容面向生物信息学新手,通过清晰的代码示例和步骤解析,帮助读者系统掌握Bulk RNA-seq数据分析的核心技能,并产出可靠的生物学洞见。

lake5的博客 717

嵌入式系统存储体系

主要分为三种:高速缓存(cache)、主存和外存。

weixin_43586667的博客 2265

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

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

Dust_heart的博客 2万+

手把手教你用思岚RPLIDAR C1激光雷达实现简单环境扫描(树莓派4B+Ubuntu22.04)

本文详细介绍了如何在树莓派4B(Ubuntu 22.04系统)上驱动思岚RPLIDAR C1激光雷达,从硬件连接、权限配置、SDK编译到运行示例程序,最终实现环境扫描数据的可视化。通过手把手教程,帮助开发者和爱好者快速上手激光雷达应用,构建简单的环境扫描图。

j2k3l4的博客 1133

合并石子(区间DP)

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

一身清贫怎敢入繁华 462

用74LS194和555定时器DIY流水灯:一个经典的数字电路课程设计复盘(附Multisim仿真文件)

本文详细介绍了使用74LS194移位寄存器和555定时器搭建八路彩灯控制器的完整过程,包括硬件选型、电路设计、调试技巧及常见问题解决方案。作为经典的数字电路课程设计,该项目涵盖了EDA工具应用、电路原理图设计和Multisim仿真等核心技能,适合电子工程学习者实践参考。

weixin_29185199的博客 428

避坑指南:为什么你的conda环境装不上Mamba?从CUDA到ABI的深度排查

本文深入解析conda环境中安装Mamba架构时常见的CUDA版本冲突、ABI不匹配等问题,提供从基础检查到深度排查的系统化解决方案。针对`causal-conv1d`和`mamba-ssm`安装失败场景,详细讲解PyTorch版本绑定、编译器工具链兼容性等关键技术要点,并给出预编译wheel选择、动态链接库配置等实用修复方案。

weixin_33738555的博客 346

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

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

only06的博客 1万+

触摸开关原理图_反激式开关电源PCB设计要点

由于最近工作中经常用到反激开关电源,就顺便做个有关反激电源PCB Layout方面的简单总结。关于变压器和补偿环路的设计原理和方法,可以参考之前的文章,链接如下:电子小白菜:反激电源变压器设计篇之详细设计步骤​zhuanlan.zhihu.com电子小白菜:反激电源变压器设计篇之基础原理​zhuanlan.zhihu.com电子小白菜:【干货分享】开关电源环路补偿设计步骤讲解​zhuanlan.z...

weixin_39574868的博客 1164

poj 3280(区间dp、java实现)

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

一个很懒的人 435

基于 YOLOv26 的 PCB 板缺陷检测:工业级视觉实战

本文提出了一种基于YOLOv26的PCB板缺陷检测系统,通过深度学习技术实现对PCB板缺陷的自动化检测。系统能够识别短路、开路、焊点不良等8种常见缺陷,具有高精度、多类别分类和实时推理等优势。文章详细介绍了系统架构,包括数据采集、预处理、YOLOv26模型检测和后处理模块。在代码实现部分,给出了环境配置、数据预处理与增强的具体方法,使用Albumentations库进行图像增强处理。该系统为电子制造业提供了高效、准确的PCB质量检测解决方案,显著提升了检测效率和准确性。

一键难忘的博客 339

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

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

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

Endeavor_G的博客 654

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

合并石子(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

Statistics and Machine Learning Toolbox

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

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

石子合并问题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

蓝桥杯 算法提高 合并石子(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、付费专栏及课程。

余额充值