题目链接:hdu 2829 Lawrence

题意:

在一条直线型的铁路上,每个站点有各自的权重num[i],每一段铁路(边)的权重(题目上说是战略价值什么的好像)是能经过这条边的所有站点的乘积之和.。然后给你m个炮弹,让你选择破坏掉m段铁路,使剩下的整条铁路的战略价值最小。

题解:

hdu 3480 Division(斜率优化DP)这题相同,只是方程不同而已,改改就行了。

  1. #include<bits/stdc++.h>
  2. #define F(i,a,b) for(int i=a;i<=b;++i)
  3. using namespace std;
  4.  
  5. const int N=;
  6.  
  7. int n,m,dp[][N],sum[N],cost[N],Q[N];
  8.  
  9. int gety(int i,int j,int k){return dp[i][j]-cost[j]+sum[j]*sum[j]-(dp[i][k]-cost[k]+sum[k]*sum[k]);}
  10. int getx(int i,int j){return sum[i]-sum[j];}
  11. int check(int i,int j,int k,int l){return gety(i,j,k)*getx(k,l)<=gety(i,k,l)*getx(j,k);}
  12.  
  13. int main()
  14. {
  15. while(scanf("%d%d",&n,&m),n+m)
  16. {
  17. m++;
  18. F(i,,n)
  19. {
  20. scanf("%d",sum+i);
  21. cost[i]=cost[i-]+sum[i]*sum[i-];
  22. sum[i]+=sum[i-];
  23. }
  24. F(i,,n)dp[][i]=cost[i];
  25. F(i,,m)
  26. {
  27. int head=,tail=;
  28. Q[++tail]=i-;
  29. F(j,i,n)
  30. {
  31. while(head<tail&&check(i&,j,Q[tail],Q[tail-]))tail--;
  32. Q[++tail]=j;
  33. while(head<tail&&gety(i&,Q[head+],Q[head])<=getx(Q[head+],Q[head])*sum[j])head++;
  34. dp[(i&)^][j]=dp[i&][Q[head]]+cost[j]-cost[Q[head]]-sum[Q[head]]*(sum[j]-sum[Q[head]]);
  35. }
  36. }
  37. printf("%d\n",dp[(m+)&][n]);
  38. }
  39. return ;
  40. }

hdu 2829 Lawrence(斜率优化DP)的更多相关文章

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

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

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

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

  3. HDU2829 Lawrence —— 斜率优化DP

    题目链接:https://vjudge.net/problem/HDU-2829 Lawrence Time Limit: 2000/1000 MS (Java/Others)    Memory L ...

  4. HDU2829 Lawrence(斜率优化dp)

    学了模板题之后上网搜下斜率优化dp的题目,然后就看到这道题,知道是斜率dp之后有思路就可以自己做不出来,要是不事先知道的话那就说不定了. 题意:给你n个数,一开始n个数相邻的数之间是被东西连着的,对于 ...

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

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

  6. hdu 3480 Division(斜率优化DP)

    题目链接:hdu 3480 Division 题意: 给你一个有n个数的集合S,现在让你选出m个子集合,使这m个子集合并起来为S,并且每个集合的(max-min)2 之和要最小. 题解: 运用贪心的思 ...

  7. HDU 6619 Horse 斜率优化dp

    http://acm.hdu.edu.cn/showproblem.php?pid=6619 #include<bits/stdc++.h> #define fi first #defin ...

  8. Print Article hdu 3507 一道斜率优化DP 表示是基础题,但对我来说很难

    Print Article Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others)To ...

  9. HDU 2993 MAX Average Problem(斜率优化DP)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2993 题目大意:给定一个长度为n(最长为10^5)的正整数序列,求出连续的最短为k的子序列平均值的最大 ...

随机推荐

  1. 基于Redis的CustomerSessionProvider(二)

    接一的考虑,那么就做Redis的SessionProvider就非常简单了,只考虑整个Session的缓存,主要实现以下两个函数就可以了 public override SessionStateSto ...

  2. struts2文件上传大小限制问题

    struts2默认文件上传大小为2M,如需修改默认大小,解决方法如下: <struts> <constant name="struts.multipart.maxSize& ...

  3. 向输出到console的文字加样式

    Chrome 控制台新玩法-向输出到console的文字加样式   有兴趣的同学可以文章最后的代码复制贴到控制台玩玩. Go for Code 在正常模式下,一般只能向console 控制台输出简单的 ...

  4. 了解OData(一)

    了解OData(一) 最近做了一个小项目,其中用到了 WCF Data Service,之前是叫 ADO.NET Data Service 的.关于WCF Data Service,博客园里的介绍并不 ...

  5. spring事务管理器设计思想(2)

    spring事务管理器设计思想(二) 上文见<spring事务管理器设计思想(一)> 对于第二个问题,涉及到事务的传播级别,定义如下: PROPAGATION_REQUIRED-- 如果当 ...

  6. hibernate添加spring 事务管理注意问题记录

    今天弄了一天的hibernate添加事务的问题 首先,建立的是一个java工程,把hibernate添加进工程里,很容易就可以写一个增删改查的方法.索性就多加点东西,把接口,抽象类也加到里面,自己看着 ...

  7. 解密:LL与LR解析 1(译)

    解密:LL与LR解析 1 作者:Josh Haberman 翻译:杨贵福 由于GFW,我无法联系到作者,所以没有授权,瞎翻译的.原文在这里[http://blog.reverberate.org/20 ...

  8. C++利用不完全实例化来获得函数模板参数的返回值和参数

    有一些模板会以函数为模板参数,有时候这些模板要获得函数的返回值和参数.如在boost中的signal和slot机制,就存在这样情况. 那么,我们如何得到这些信息呢? 我们使用C++不完全实例化来实现. ...

  9. iOS extern使用教程

    ios开发使用extern访问全局变量 使用extern关键字法: 1 .新建Constants.h文件(文件名根据需要自己取),用于存放全局变量: 2. 在Constants.h中写入你需要的全局变 ...

  10. Eclipse相关集锦

    开场白,之前的个人博客写过很多细小的Eclipse的东西,这里将搬过来,作为整体一篇. 1.Eclipse提示失效 解决:window->Preferences->Java->Edi ...