[swustoj 404] 最小代价树

时间:2022-09-20 14:11:30

最小代价树(0404)

问题描述

以下方法称为最小代价的字母树:给定一正整数序列,例如:4,1,2,3,在不改变数的位置的条件下把它们相加,并且用括号来标记每一次加法所得到的和。 
例如:((4+1)+ (2+3))=((5)+(5))=10。除去原数不4,1,2,3之外,其余都为中间结果,如5,5,10,将中间结果相加,得到:5+5+10= 20,那么数20称为此数列的一个代价,若得到另一种算法:(4+((1+2)+3))=(4+((3)+3))=(4+(6))=10,数列的另一个代价为:3+6+10=19。若给出N个数,可加N-1对括号,求出此数列的最小代价。 
注:结果范围不超出longint.

输入

第一行为数N(1≤N≤200),第二行为N个正整数,整数之间用空格隔开。

输出

输出仅一行,即为最少代价值。

样例输入

4
4 1 2 3

样例输出

19

简单区间DP、

#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdio>
#include <cmath>
using namespace std;
#define ll long long
#define MOD 1000000007
#define INF 0x3f3f3f3f
#define N 310 int a[N];
int sum[N];
int dp[N][N]; //dp[i][j]表示区间i,j的最小代价 int main()
{
int n;
int i,j,k,len;
while(scanf("%d",&n)!=EOF)
{
memset(dp,INF,sizeof(dp));
for(i=;i<=n;i++){
scanf("%d",&a[i]);
sum[i]=sum[i-]+a[i];
dp[i][i]=;
}
for(len=;len<=n;len++){
for(i=;i<=n-len+;i++){
j=i+len-;
for(k=i;k<j;k++){
dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+][j]+sum[j]-sum[i-]);
}
}
}
printf("%d\n",dp[][n]);
}
return ;
}

[swustoj 404] 最小代价树的更多相关文章

  1. &lbrack;Swust OJ 404&rsqb;--最小代价树&lpar;动态规划&rpar;

    题目链接:http://acm.swust.edu.cn/problem/code/745255/ Time limit(ms): 1000 Memory limit(kb): 65535   Des ...

  2. SPH算法(求最小代价树)

    一.sph算法简介 1.最小代价树算法 SPH算法也叫做MPH( minimum path heuristic)算法, 用于构造时延约束最算法小代价组播树. 该算法中每 个目的结点通过与当前组播树有最 ...

  3. &lbrack;模板&rsqb;最小割树&lpar;Gomory-Hu Tree&rpar;&lpar;luogu4897&rpar;

    给定一个\(n\)个点\(m\)条边的无向连通图,多次询问两点之间的最小割 两点间的最小割是这样定义的:原图的每条边有一个割断它的代价,你需要用最小的代价使得这两个点不连通 Input 第一行两个数\ ...

  4. &lbrack;BZOJ4883&rsqb;&lbrack;Lydsy1705月赛&rsqb;棋盘上的守卫&lbrack;最小基环树森林&rsqb;

    题意 有一大小为 \(n*m\) 的棋盘,要在一些位置放置一些守卫,每个守卫只能保护当前行列之一,同时在每个格子放置守卫有一个代价 \(w\) ,问要使得所有格子都能够被保护,需要最少多少的代价. \ ...

  5. BZOJ4883&colon; &lbrack;Lydsy1705月赛&rsqb;棋盘上的守卫(最小环套树森林&amp&semi;优化定向问题)

    4883: [Lydsy1705月赛]棋盘上的守卫 Time Limit: 3 Sec  Memory Limit: 256 MBSubmit: 475  Solved: 259[Submit][St ...

  6. 【bzoj4883】&lbrack;Lydsy2017年5月月赛&rsqb;棋盘上的守卫 最小环套树森林

    题目描述 在一个n*m的棋盘上要放置若干个守卫.对于n行来说,每行必须恰好放置一个横向守卫:同理对于m列来说,每列必须恰好放置一个纵向守卫.每个位置放置守卫的代价是不一样的,且每个位置最多只能放置一个 ...

  7. 【模板】最小割树(Gomory-Hu Tree)

    传送门 Description 给定一个\(n\)个点\(m\)条边的无向连通图,多次询问两点之间的最小割 两点间的最小割是这样定义的:原图的每条边有一个割断它的代价,你需要用最小的代价使得这两个点不 ...

  8. 最小割树&lpar;Gomory-Hu Tree&rpar;求无向图最小割详解 附 BZOJ2229&comma;BZOJ4519题解

    最小割树(Gomory-Hu Tree) 前置知识 Gomory-Hu Tree是用来解决无向图最小割的问题的,所以我们需要了解无向图最小割的定义 和有向图类似,无向图上两点(x,y)的割定义为一个边 ...

  9. B&colon; 最小代价

    B: 最小代价 题解:先用最小生成树求联通所有点的最小代价ans 在求度为1的时候权值最大的点mx ans-mx就是答案 #include<iostream> #include<al ...

随机推荐

  1. C语言编程实现Linux命令——who

    C语言编程实现Linux命令--who 实践分析过程 who命令是查询当前登录的每个用户,它的输出包括用户名.终端类型.登录日期及远程主机,在Linux系统中输入who命令输出如下: 我们先man一下 ...

  2. Windows Azure Cloud Service &lpar;12&rpar; PaaS之Web Role&comma; Worker Role&comma; Azure Storage Queue&lpar;下&rpar;

    <Windows Azure Platform 系列文章目录> 本章DEMO部分源代码,请在这里下载. 在上一章中,笔者介绍了我们可以使用Azure PaaS的Web Role和Worke ...

  3. 在本地计算机无法启动MYSQL服务错误1067进程意外终止

    在本地计算机无法启动MYSQL服务错误1067进程意外终止 这种情况一般是my.ini文件配置出错了, 你可以删除系统目录下的my.ini文件, 把下面的内容重新写入my.ini文件试试, 要适当地改 ...

  4. httperf学习笔记(CentOS-6&period;6环境下安装配置)

    新工作已经找到了,最近在忙着熟悉环境,昨天领导让我接触下httperf压力测试工具 百度了下,相关的文档,准备着手配置一个测试环境基于linux系统httperf+autobench+gnuplot, ...

  5. hdu-4418-Time travel-高斯&plus;概率dp

    把N个点先转化为2*N-2个点. 比方说把012345转化成0123454321. 这样,就能够找出随意两两个点之间的关系. 然后依据关系能够得出来一个一元多项式的矩阵. 然后就用高斯消元求出矩阵就可 ...

  6. 为什么使用Hystrix?

    分布式服务弹性框架“Hystrix”实践与源码研究(一)   文章初衷 为了应对将来在线(特别是无线端)业务量的成倍增长,后端服务的分布式化程度需要不断提高,对于服务的延迟和容错管理将面临更大挑战,公 ...

  7. gdb解决字符串打印果断措施

    在我们进行gdb动态调试的时候,很多时间可能会遇到无法完全显示的情况 关于这种方法网上已经有解决方法 https://blog.csdn.net/shuizhizhiyin/article/detai ...

  8. java自学总结

    经过了一段时间的java学习,感觉自己在编程方面还只是一个初学者,感觉学会了c,在学c++的时候就是以c为基础,java应该也是以c或者c++为基础,但是并非如此,java和c++虽然有一些相似之处, ...

  9. linux中测试py脚本使用debug模式

    python -mtrace --trace ping_host.py

  10. pycharm中conda环境部署

    问题 pycharm中部署了conda base环境,项目中 import sklearn 报错,缺少DLL模块 . 但是在Anaconda Prompt中 import sklearn 则成功. 发 ...