$dp$,斜率优化。

设$dp[i][j]$表示前$i$个数字切了$j$次的最小代价。$dp[i][j]=dp[k][j-1]+p[k+1][i]$。观察状态转移方程,可以发现是一列一列推导出来的。可以初始化第一列,然后算第二列,然后算第三列。

暴力算的话时间复杂度是$O(n^3)$,需要优化。将$p[x][y]$换成带有$sum$的式子,一顿化简后,发现可以斜率优化。具体过程与HDU 3507差不多。不再赘述。

#pragma comment(linker, "/STACK:1024000000,1024000000")
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<vector>
#include<map>
#include<set>
#include<queue>
#include<stack>
#include<ctime>
#include<iostream>
using namespace std;
typedef long long LL;
const double pi=acos(-1.0),eps=1e-;
void File()
{
freopen("D:\\in.txt","r",stdin);
freopen("D:\\out.txt","w",stdout);
}
template <class T>
inline void read(T &x)
{
char c = getchar();
x = ;
while(!isdigit(c)) c = getchar();
while(isdigit(c))
{
x = x * + c - '';
c = getchar();
}
} int n,m;
long long a[],sum[],p[][],dp[][];
int f1,f2,q[]; bool delete1(int x,int a,int b,int c)
{
if(dp[b][x]-p[][b]+sum[b]*sum[b]-dp[a][x]+p[][a]-sum[a]*sum[a]<sum[c]*(sum[b]-sum[a])) return ;
return ;
} bool delete2(int x,int a,int b,int c)
{
if((dp[c][x]-p[][c]+sum[c]*sum[c]-dp[b][x]+p[][b]-sum[b]*sum[b])*(sum[b]-sum[a])<
(dp[b][x]-p[][b]+sum[b]*sum[b]-dp[a][x]+p[][a]-sum[a]*sum[a])*(sum[c]-sum[b])) return ;
return ;
} int main()
{
while(~scanf("%d%d",&n,&m))
{
if(n==&&m==) break; m++;
for(int i=;i<=n;i++)
{
scanf("%d",&a[i]);
sum[i]=sum[i-]+a[i];
}
for(int i=;i<=n;i++)
{
for(int j=;j<=n;j++)
{
int s=j,e=j+i-;
if(e>n) continue;
if(i==) { p[s][e]=; continue; }
p[s][e]=p[s+][e]+a[s]*(sum[e]-sum[s]);
}
} for(int i=;i<=n;i++) dp[i][]=p[][i]; for(int j=;j<=m;j++)
{
f1=; f2=; q[f2]=j-;
for(int i=j;i<=n;i++)
{
while()
{
if(f2-f1+<) break;
if(delete1(j-,q[f1],q[f1+],i)) f1++;
else break;
} dp[i][j] = dp[q[f1]][j-]+p[q[f1]+][i]; while()
{
if(f2-f1+<) break;
if(delete2(j-,q[f2-],q[f2],i)) f2--;
else break;
} f2++; q[f2]=i;
}
} printf("%lld\n",dp[n][m]);
}
return ;
}

HDU 2829 Lawrence的更多相关文章

  1. hdu 2829 Lawrence(斜率优化DP)

    题目链接:hdu 2829 Lawrence 题意: 在一条直线型的铁路上,每个站点有各自的权重num[i],每一段铁路(边)的权重(题目上说是战略价值什么的好像)是能经过这条边的所有站点的乘积之和. ...

  2. HDU 2829 - Lawrence - [斜率DP]

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2829 T. E. Lawrence was a controversial figure during ...

  3. HDU 2829 Lawrence(四边形优化DP O(n^2))

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2829 题目大意:有一段铁路有n个站,每个站可以往其他站运送粮草,现在要炸掉m条路使得粮草补给最小,粮草 ...

  4. HDU 2829 Lawrence(斜率优化DP O(n^2))

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2829 题目大意:有一段铁路有n个站,每个站可以往其他站运送粮草,现在要炸掉m条路使得粮草补给最小,粮草 ...

  5. HDU 2829 Lawrence(动态规划-四边形不等式)

    Lawrence Problem Description T. E. Lawrence was a controversial figure during World War I. He was a ...

  6. hdu 2829 Lawrence(四边形不等式优化dp)

    T. E. Lawrence was a controversial figure during World War I. He was a British officer who served in ...

  7. HDU 2829 Lawrence (斜率DP)

    斜率DP 设dp[i][j]表示前i点,炸掉j条边的最小值.j<i dp[i][j]=min{dp[k][j-1]+cost[k+1][i]} 又由得出cost[1][i]=cost[1][k] ...

  8. HDU.2829.Lawrence(DP 斜率优化)

    题目链接 \(Description\) 给定一个\(n\)个数的序列,最多将序列分为\(m+1\)段,每段的价值是这段中所有数两两相乘的和.求最小总价值. \(Solution\) 写到这突然懒得写 ...

  9. HDU 2829 Lawrence (斜率优化DP或四边形不等式优化DP)

    题意:给定 n 个数,要你将其分成m + 1组,要求每组数必须是连续的而且要求得到的价值最小.一组数的价值定义为该组内任意两个数乘积之和,如果某组中仅有一个数,那么该组数的价值为0. 析:DP状态方程 ...

随机推荐

  1. Java —— Reflect反射机制

    JAVA反射机制是在运行时,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为java的反射机制. ...

  2. NS产品演进

    NS产品演进 Citrix产品体系================ Citrix产品类别================ NS产品演进================ 产品联系方式========== ...

  3. 2018-8-10考试 T3. 朝暮(akekure)

    题目大意:有$n$个点和$m$条边的图($n - 1 \leq m \leq n + 5$),每个点要么黑要么白,两个黑点不可以相邻,问方案数 题解:可以发现当图为一棵树的时候只需要一个树形$DP$ ...

  4. 用JQuery的$.getJSON发起跨域Ajax请求

    jQuery中常用getJSON来调用并获取远程的JSON字符串,将其转换为JSON对象,如果成功,则执行回调函数.原型如下: jQuery.getJSON( url, [data], [callba ...

  5. Codeforces Round #526 (Div. 2) D. The Fair Nut and the Best Path

    D. The Fair Nut and the Best Path 题目链接:https://codeforces.com/contest/1084/problem/D 题意: 给出一棵树,走不重复的 ...

  6. Java中Class<T>与Class<?>的区别

    E - Element (在集合中使用,因为集合中存放的是元素) T - Type(Java 类) K - Key(键) V - Value(值) N - Number(数值类型) ? - 表示不确定 ...

  7. ${pageContext.request.contextPath}的解释以及和request.contextPath的区别

    JSP中究竟采用绝对路径还是采用相对路径随着所采用技术的越来越复杂,这个问题也变得越来越难以解决. 1)采用相对路径遇到的问题 l 相对路径固然比较灵活,但如果想复制页面内的代码却变得比较困难,因为不 ...

  8. 图论:KM算法

    如果,将求二分图的最大匹配的所有匹配边的权重看做1 那么用匈牙利算法求二分图的最大匹配的问题也可以看成求二分图的最大权匹配 如果边权是特例,我们就要使用KM算法来做了 这个算法其实还是比较难的,会用就 ...

  9. 【洛谷 P1651】 塔 (差值DP)

    题目链接 题意:\(n\)个木块放到两个塔里,每个木块可放可不放,使得两塔高度相同且高度最大,求最大高度. 这个差值\(DP\)的思维难度还是很大的,没想出来,我就打了一个\(dfs\)骗了好像\(2 ...

  10. OpenWRT介绍

    1. 介绍 OpenWRT是一款第三方路由器固件, 其特别在于开放性, 如它的文件系统可写, 用户可在路由器上安装需要的第三方软件.通过刷入OpenWRT, 我们可以完成如下事情 - DLNA共享 - ...