区间dp板子题:[noi1995]石子合并
2024-08-24 20:33:52
非常经典的区间dp模板
对于每一个大于二的区间 我们显然都可以将它拆分成两个子序列 那么分别计算对于每个取最优值即可
#pragma GCC optimize("O2")
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
#include<stack>
#include<set>
#include<map>
#include<limits.h>
#include<ctime>
#define N 100001
typedef long long ll;
const int inf=0x3fffffff;
const int maxn=2017;
using namespace std;
inline int read()
{
int f=1,x=0;char ch=getchar();
while(ch>'9'|ch<'0')
{
if(ch=='-')
f=-1;
ch=getchar();
}
while(ch<='9'&&ch>='0')
{
x=(x<<3)+(x<<1)+ch-'0';
ch=getchar();
}
return f*x;
}
int dp[maxn][maxn],a[N],sum[N];
int main()
{
int n=read();
for(int i=1;i<=n;i++)
{
a[i]=read();
sum[i]=sum[i-1]+a[i];
}
for(int len=1;len<=n;len++)
{
for(int l=1,r;(r=l+len)<=n;l++)
{
dp[l][r]=inf;
for(int k=l;k<r;k++)
dp[l][r]=min(dp[l][r],dp[l][k]+dp[k+1][r]+sum[r]-sum[l-1]);
}
}
cout<<dp[1][n];
}
另外强烈安利这篇讲区间dp的 全网最棒!强推一波!
顺便我居然才开始学区间dp(我太弱啦!
最新文章
- SQL Server 2014新特性探秘(3)-可更新列存储聚集索引
- Read excel and put cell data into HashMap
- Maven国内下载站点
- Hadoop实战5:MapReduce编程-WordCount统计单词个数-eclipse-java-windows环境
- linux下打包命令的使用
- [Tool] 源代码管理之Git
- 设定所有tableView中cell的分隔线颜色
- JSP在项目中的路径问题
- Linux 挂载新硬盘
- linux中sed用法
- 解析xlsx与xls--使用2012poi.jar
- spark1.3.1使用基础教程
- C#断点调试时属性get块逻辑执行多次
- node.js浅见
- 线程相关的sleep()、yield()、wait()、join()方法介绍
- IDEA中的替换功能(替换代码中的变量名很好用哦)
- .NET MVC EF框架数据库连接配置
- 导出数据库表为world文档说明,以及PowerDesigner导出表结构pdm设计文档
- Ubuntu16.04 安装 Django
- 6.2 socket 流协议与粘包