题目链接:戳我

朴素DP:\(dp[i][j]=dp[i-1][k]+cost[k+1][j]\)

其中dp[i][j]表示炸第i次的时候,处理到前j个的最小值是多少。cost[i][j]表示的是i,j联通的情况下的贡献。

之后可以套用四边形不等式优化,然后将复杂度降低到\(O(n^2)\)

注意hdu不支持

  1. #ifndef ONLINE_JUDGE
  2. #endif

加了之后会WA的qwqwq

  1. #include<cstdio>
  2. #include<algorithm>
  3. #include<cmath>
  4. #include<cstring>
  5. #define MAXN 1010
  6. using namespace std;
  7. int n,m;
  8. long long dp[MAXN][MAXN],s[MAXN][MAXN],cost[MAXN][MAXN],a[MAXN],sum[MAXN];
  9. int main()
  10. {
  11. while(scanf("%d%d",&n,&m)==2)
  12. {
  13. if(n==0||m==0) break;
  14. memset(dp,0x3f,sizeof(dp));
  15. memset(s,0,sizeof(s));
  16. memset(cost,0,sizeof(cost));
  17. for(int i=1;i<=n;i++)
  18. scanf("%lld",&a[i]),sum[i]=sum[i-1]+a[i];
  19. for(int i=1;i<=n;i++)
  20. for(int j=i+1;j<=n;j++)
  21. cost[i][j]=cost[i][j-1]+(sum[j-1]-sum[i-1])*a[j];
  22. // for(int i=1;i<=n;i++)
  23. // for(int j=i+1;j<=n;j++)
  24. // printf("cost[%d][%d]=%lld\n",i,j,cost[i][j]);
  25. for(int i=1;i<=n;i++)
  26. {
  27. dp[0][i]=cost[1][i];
  28. s[0][i]=1;
  29. s[i][n+1]=n-1;
  30. }
  31. for(int i=1;i<=m;i++)
  32. {
  33. for(int j=n;j>i;j--)
  34. {
  35. for(int k=s[i-1][j];k<=s[i][j+1];k++)
  36. {
  37. if(dp[i-1][k]+cost[k+1][j]<dp[i][j])
  38. {
  39. dp[i][j]=dp[i-1][k]+cost[k+1][j];
  40. s[i][j]=k;
  41. }
  42. }
  43. }
  44. }
  45. printf("%lld\n",dp[m][n]);
  46. }
  47. return 0;
  48. }

hdu2829 Lawrence的更多相关文章

  1. HDU2829 Lawrence —— 斜率优化DP

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

  2. HDU2829 Lawrence(斜率优化dp)

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

  3. HDU-2829 Lawrence (DP+四边形不等式优化)

    题目大意:有n个敌方军火库呈直线排列,每个军火库有一个值vi,并且任意相邻的两个库之间都有通道相连.对于任意一条连起来的军火库链,它对我方的威胁可以用函数w(i,j)表示为:w(i,j)=vi*sum ...

  4. [HDU2829] Lawrence [四边形不等式优化dp]

    题面: 传送门 思路: 依然是一道很明显的区间dp 我们设$dp\left[i\right]\left[j\right]$表示前$j$个节点分成了$i$块的最小花费,$w\left[i\right]\ ...

  5. 斜率优化板题 HDU2829 Lawrence

    题目大意:给定一个长度为nnn的序列,至多将序列分成m+1m+1m+1段,每段序列都有权值,权值为序列内两个数两两相乘之和.求序列权值和最小为多少? 数据规模:m<=n<=1000.m&l ...

  6. DP 优化方法大杂烩 & 做题记录 I.

    标 * 的是推荐阅读的部分 / 做的题目. 1. 动态 DP(DDP)算法简介 动态动态规划. 以 P4719 为例讲一讲 ddp: 1.1. 树剖解法 如果没有修改操作,那么可以设计出 DP 方案 ...

  7. 【HDOJ】【2829】Lawrence

    DP/四边形不等式 做过POJ 1739 邮局那道题后就很容易写出动规方程: dp[i][j]=min{dp[i-1][k]+w[k+1][j]}(表示前 j 个点分成 i 块的最小代价) $w(l, ...

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

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

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

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

随机推荐

  1. yii创建与设置默认控制器并载入模板

    yii创建与设置默认控制器并载入模板 一.创建控制器 在protected下的controllers文件夹中创建自定义的控制器文件,比如: IndexController.php (文件名首字母大写) ...

  2. centos7之iptables与firewalld

    保障数据的安全性是继保障数据的可用性之后最为重要的一项工作.防火墙作为公网 与内网之间的保护屏障,在保障数据的安全性方面起着至关重要的作用. firewalld与iptables iptables f ...

  3. loadrunner12-查看controller运行报错详细log

    1.路径为controller-->results-->results setting 2.打开文件夹res/log/***.log,里面会有当前场景运行的log日志. 注:启用这个首先保 ...

  4. 761A Dasha and Stairs

    A. Dasha and Stairs time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  5. 修改socket缓冲区大小

    #include <stdio.h>#include <sys/time.h>#include <sys/types.h>#include <sys/sock ...

  6. g++报错原因分析:expected class-name before ‘{’ token

    今天写程序的时候, 遇到这样一个错误expected class-name before ‘{’ token 最后发现原来是我的头文件声明没有加. 继承时不要忘记加基类的头文件 错误: class F ...

  7. 使用 EWS(Exchange Web Service)协议读取邮件、发送邮件

    问题: 公司之前可以通过POP3协议收发邮件,因而在SoapUI中用JavaMail可以读取邮件,后来配置了Office 365,POP3协议端口不再开放,邮件全部读取失败,报login timeou ...

  8. Mockplus推出真正无限制终身版,做原型就要一辈子!

    如今提到原型工具,各位设计师和PM爸爸们一定不会对Mockplus感到陌生吧?事实上,从一开始的默默无闻,到在UXPA大赛上崭露头角,再到被Adobe XD 列为主要竞品,如今,摩客君已经在全球范围内 ...

  9. MYSQL 问题小总结

    mysql 问题小总结 1.MySQL远程连接ERROR 2003(HY000):Can't connect to MySQL server on ‘ip’(111)的问题 通常是mysql配置文件中 ...

  10. 2018.10.13 bzoj1070: [SCOI2007]修车(费用流)

    传送门 费用流经典题目. 自我感觉跟TheWindy′sThe Windy'sTheWindy′s很像. 利用费用提前计算的思想来建图就行了. 代码: #include<bits/stdc++. ...