【动态规划】石子合并

石子合并石子合并

Description

在一个操场上一排地摆放着N堆石子。现要将石子有次序地合并成一堆。规定每次只能选相邻的2堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的得分。请设计一个程序,计算出将N堆石子合并成一堆的最小得分。

Input

每组数据第1行为一个正整数N(2<=N<=100),以下N行,每行一个正整数,小于10000,分别表示第i堆石子的个数(1<=i<=N)。

Output

对于每组数据输出一个正整数,即最小得分

Sample Input

7

13

7

8

16

21

4

18

Sample Output

239

解题方法:

这道题我们可以用两个方法来做,两种方法分别如下:

方法1:先枚举边界,再枚举中间的断点,将断点两边的分值加在一起,再加上当前的分值

#include<iostream>
using namespace std;
int main()
{int a[100],f[100][100],n,o;cin>>n;for (int i=1;i<=n;i++){cin>>o;a[i]=a[i-1]+o;//求前缀和} memset(f,127/3,sizeof(f));for (int i=1;i<=n;i++) f[i][i]=0;//清零for (int i=n-1;i>=1;i--)//枚举边界for (int j=i+1;j<=n;j++)//枚举边界for (int c=i;c<j;c++)//枚举断点f[i][j]=min(f[i][j],f[i][c]+f[c+1][j]+a[j]-a[i-1]);//状态转移方程cout<<f[1][n];
}

方法2: 先枚举长度,再枚举前面的边界和断点,后面的边界就是前面的边界+长度-1,以此类推,算出结果

#include<cstdio>
#include<iostream>
using namespace std;
int x,n,a[100],f[100][100];
int main()
{scanf("%d",&n);memset(f,127/3,sizeof(f));for (int i=1;i<=n;i++){scanf("%d",&x);a[i]=a[i-1]+x;//求前缀和f[i][i]=0;//清零}for (int i=2;i<=n;i++)//枚举长度for (int j=1;j<=n-i+1;j++)//枚举边界for (int k=j;k<=j+i-2;k++)//枚举断点f[j][i+j-1]=min(f[j][i+j-1],f[j][k]+f[k+1][j+i-1]+a[j+i-1]-a[j-1]);//状态转移方程printf("%d",f[1][n]);
}

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

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

相关文章

.NET Core调用WCF的最佳实践

现在.NET Core貌似很火&#xff0c;与其他.NET开发者交流不说上几句.NET Core都感觉自己落伍了一样。但是冷静背后我们要也看到.NET Core目前还有太多不足&#xff0c;别的不多说&#xff0c;与自家的服务框架WCF集成起来就不咋地&#xff0c;从最初不支持&#xff0c;到现在有…

4、表单提交和验证

1、启用/禁用表单module sbt启动应用时默认就启用了表单&#xff0c;也可以在build.sbt中添加启用libraryDependencies javaForms&#xff0c;想要移除表单时使用PlayMinimalJava 插件 2、play接收表单数据 play.data中的类可用于处理HTTP表单数据提交和验证&#xff0c;操…

Boring Homework 二叉搜索树的打印,模拟

写了好长时间&#xff0c;注意递归的使用&#xff0c;思路一定要清晰。 还有注意的地方&#xff1a;打印的时候一定要先打印到缓存buffer中&#xff0c;然后再输出到屏幕上面。 #include <bits/stdc.h> using namespace std; int idx 0; int val[100],lft[100],rgt[100…

jzoj3501-消息传递【换根法,树形dp】

正题 题目链接:https://jzoj.net/senior/#contest/show/3005/1 题目大意 一棵树&#xff0c;一个信息开始给一个人&#xff0c;每次得到信息的人可以选择相邻节点中的一个传递&#xff0c;求最短多久可以传到所有人。 解题思路 我们先考虑如何求一根的答案&#xff0c;farif…

【贪心】最佳浏览路线问题

最佳浏览路线问题最佳浏览路线问题最佳浏览路线问题 题目描述 某旅游区的街道成网格状&#xff08;见图&#xff09;&#xff0c;其中东西向的街道都是旅游街&#xff0c;南北向的街道都是林荫道。由于游客众多&#xff0c;旅游街被规定为单行道。游客在旅游街上只能从西向东…

Ooui:在浏览器中运行.NET应用

在过去数年中&#xff0c;桌面应用开发人员一直处境艰难&#xff0c;因为人们的主要关注点聚焦于Web和移动应用。由于Microsoft未来Windows平台的计划未定&#xff0c;并且UWP应用也没有突破性进展&#xff0c;因此技术落伍的责任也不应由.NET开发人员来承担。当前迫切需要解决…

5、play中的json数据处理

1、play中的json库 Play使用Jackson JSON库将对象转换为JSON和JSON之间的对象。play的操作使用JsonNode类型&#xff0c;play.libs.json包中有操作json数据的方法 2、java对象和json数据 将java对象转成play中的JsonNode类型&#xff1a; 将JsonNode格式的数据解析到java对象…

P2354,jzoj3757-[NOI2014]随机数生成器【贪心,暴力】

正题 题目链接:https://www.luogu.com.cn/problem/P2354 解题思路 以1∼n∗m1\sim n*m1∼n∗m的数字组成的n∗mn*mn∗m的矩阵&#xff0c;求一条路径使得路径上的数排序后字典序最小。 解题思路 考虑从小到大依次枚举来判断是否可行。 每次判断一个点是否可以经过然后加入一…

Detection of Extraterrestrial KMP匹配 重复k次子串 好题

一开始以为这道题是后缀数组&#xff0c;想了好久没想明白怎么做&#xff0c;后来发现暴力枚举起点&#xff0c;进行KMP就好了。 枚举起点以后&#xff0c;构建fail数组。 遍历fail数组&#xff0c;如果串s[l,r]是由串s[s,t]重复k次得到的&#xff0c;那么fail数组的样子一定…

【贪心】最大连续数列的和

最大连续数列的和最大连续数列的和最大连续数列的和 题目描述 求最大连续子序列的和 输入 第一行输入n(n<500),第二行为n个以空格分开的整数(-1000到1000之间) 输出 该序列中最大的连续子序列的和 输入样例 &#xff16; 1 2 -5 6 7 8 输出样例 21 解题思路 用…

农行基于TFS工具的敏捷转型实践

““春天工程”项目组是应用开发二部最早采用敏捷模式的项目组&#xff0c;项目组在项目推进过程中使用Scrum框架&#xff0c;结合“看板站会”形式&#xff0c;积极探索项目推进新措施。结合TFS工具逐步实现了电子工具与物理看板的有机融合&#xff0c;并在过程管理、版本管理…

6、XML数据处理

1、处理xml请求 两种方式&#xff0c;一是直接将请求体数据转成Document对象&#xff1a; 二是定义自己的解析格式将请求体进行解析&#xff1a; 2、返回xml格式数据响应 设置响应头格式为application/xml类型

.NET Core:新的快速开发平台

.NET Core 今年已经发布了 2.0 版本了。技术雷达最近将 .NET Core 从“评估”移到了“试用”阶段&#xff0c;意味着运用这项技术的风险在不断减小。本文将简要介绍基于 .NET Core 的快速开发的方式。.NET Core 产生于 2014年&#xff0c;是一个不折不扣的新开发平台。SmallTal…

Juice Extractor dp

题意&#xff1a; 水果忍者游戏&#xff0c;给出N个水果的出现时间和消失时间。 每次切可以清除该时刻中屏幕上的所有水果&#xff0c;只有combo>3的时候才得分&#xff0c;得分为combo的值。 题解&#xff1a; 可以把每个水果看成是一段时间区间。 然后把这些区间按照…

【动态规划】公共子串

公共子串公共子串公共子串 Description 设有A、B两个字符串&#xff0c;找出A、B共同子串&#xff0c;每个字符串无相同字符&#xff0c;可以不连续&#xff0c;但顺序不能颠倒。 Input 第一行字符串A 第二行字符串&#xff22; Output 最长公共子串的长度. Sample Inp…

P1117-[NOI2016]优秀的拆分【SA】

正题 题目链接:https://www.luogu.com.cn/problem/P1117 题目大意 长度为nnn的字符串&#xff0c;求所有子串有多少种分割成AABBAABBAABB的方式。 解题思路 aia_iai​表示以iii结尾的子串中有多少种分割成AAAAAA的方式 bib_ibi​表示以iii开头的子串中有多少种分割成AAAAAA的…

7、play中的文件上传

1、基本的文件上传处理 将form的类型设置成multipart/form-data&#xff0c;请求的方式必须是POST类型&#xff0c;实例如下&#xff1a; 请求发到controller&#xff0c;controller中处理&#xff1a; public Result upload() {MultipartFormData<TemporaryFile> bod…

分布式高性能消息处理中心HPMessageCenter

HPMessageCenter高性能消息分发中心。用户只需写好restful接口&#xff0c;在portal里面配置消息的处理地址&#xff0c;消息消费者就会自动访问相关接口&#xff0c;完成消息任务。&#xff08;其实HPMessageCenter有两个版本&#xff0c;这次开源的是第二个版本。在第一个版本…

codeforces Balanced Substring

B. Balanced Substringtime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputYou are given a string s consisting only of characters 0 and 1. A substring [l, r] of s is a string slsl  1sl  2... sr, and its l…

【动态规划】打砖块

打砖块打砖块打砖块 Description KXT是一个很无聊的小朋友&#xff0c;一天到晚都在打坐… 一天&#xff0c;被他发现了一个比打坐更无聊的事情——打砖块。很多块砖分布在一个mm的矩阵中&#xff0c;他可以消掉以他为左上角顶点的一个nn的矩阵里的所有砖块。 喜欢偷懒的他…