思路:dp[i]=dp[j]+(num[i]-num[j+1])^2;

#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
#define Maxn 1000010
#define LL unsigned __int64
using namespace std;
LL dp[Maxn],num[Maxn];
int que[Maxn*];
inline int ReadInt()
{
char ch = getchar();
int data = ;
while (ch < '' || ch > '')
ch = getchar();
do
{
data = data* + ch-'';
ch = getchar();
} while (ch >= '' && ch <= '');
return data;
}
int main()
{
int n,i,j;
LL c;
while(scanf("%d%I64u",&n,&c)!=EOF,n||c){
memset(dp,,sizeof(dp));
for(i=;i<=n;i++)
num[i]=(LL)ReadInt();
int head,rear;
head=;rear=;
que[++rear]=;
dp[]=;
for(i=;i<=n;i++){
while(head<rear&&(dp[que[head+]]+num[que[head+]+]*num[que[head+]+]-(dp[que[head]]+num[que[head]+]*num[que[head]+])<=*num[i]*(num[que[head+]+]-num[que[head]+])))
head++;
dp[i]=dp[que[head]]+(num[i]-num[que[head]+])*(num[i]-num[que[head]+])+c;
while(head<rear&&(dp[i]+num[i+]*num[i+]-(dp[que[rear]]+num[que[rear]+]*num[que[rear]+]))*(num[que[rear]+]-num[que[rear-]+])<=(dp[que[rear]]+num[que[rear]+]*num[que[rear]+]-(dp[que[rear-]]+num[que[rear-]+]*num[que[rear-]+]))*(num[i+]-num[que[rear]+]))
rear--;
que[++rear]=i;
}
printf("%I64u\n",dp[n]);
}
return ;
}

hdu 4258 斜率DP的更多相关文章

  1. B - Lawrence HDU - 2829 斜率dp dp转移方程不好写

    B - Lawrence HDU - 2829 这个题目我觉得很难,难在这个dp方程不会写. 看了网上的题解,看了很久才理解这个dp转移方程 dp[i][j] 表示前面1~j 位并且以 j 结尾分成了 ...

  2. hdu 3507 斜率dp

    不好理解,先多做几个再看 此题是很基础的斜率DP的入门题. 题意很清楚,就是输出序列a[n],每连续输出的费用是连续输出的数字和的平方加上常数M 让我们求这个费用的最小值. 设dp[i]表示输出前i个 ...

  3. D - Pearls HDU - 1300 斜率dp+二分

    D - Pearls HDU - 1300 这个题目也是一个比较裸的斜率dp,依照之前可以推一下这个公式,这个很好推 这个注意题目已经按照价格升序排列序,所以还是前缀和还是单调的. sum[i] 表示 ...

  4. hdu 2829 斜率DP

    思路:dp[i][x]=dp[j][x-1]+val[i]-val[j]-sum[j]*sum[i]+sum[j]*sum[j]; 其中val[i]表示1~~i是一段的权值. 然后就是普通斜率dp做法 ...

  5. HDU 4258 斜率优化dp

    Covered Walkway Time Limit: 30000/10000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Othe ...

  6. HDU 3480 斜率dp

    Division Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 999999/400000 K (Java/Others)Total ...

  7. hdu 2993 斜率dp

    思路:直接通过斜率优化进行求解. #include<iostream> #include<cstdio> #include<algorithm> #include& ...

  8. HDU 4258 Covered Walkway 斜率优化DP

    Covered Walkway Problem Description   Your university wants to build a new walkway, and they want at ...

  9. HDU 3480 - Division - [斜率DP]

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3480 Time Limit: 10000/5000 MS (Java/Others) Memory L ...

随机推荐

  1. thymeleaf获取当前时间并格式化输出

    有时候会需要在模板中直接打印时间的需求,如果输出一个时间还需要在java类中去获取model的话,那未免也太麻烦了,以下为thymeleaf在模板中直接获取时间戳并格式化输的代码 获取时间戳 < ...

  2. AngularJs学习笔记-数据绑定、管道

    数据绑定.管道 (1)数据绑定(Angular中默认是单向绑定) 1.[]方括号 可以用于子组件传值 由于是单向绑定,所以当子组件中的iStars属性发生改变时,不会影响到父组件中product.ra ...

  3. 【DBA-Oracle】更改Oracle数据字符集_转为常用的ZHS16GBK

    A.oracle server 端 字符集查询  select userenv('language') from dual 其中NLS_CHARACTERSET 为server端字符集 NLS_LAN ...

  4. Javascript显示提示信息加样式

    #region JS提示============================================ /// <summary> /// 添加编辑删除提示 /// </s ...

  5. vue:vue router学习小结

    序:本篇内容主要侧重对前端路由的理解,以vue的官方路由作为载体,进行一个简单介绍. 一.路由历史: 最早开始的时候,项目开发使用的是SSR,即服务端渲染.这个时候刷新页面,服务器返回的是全部的htm ...

  6. Oracle Hint 之 Append

    1 描述 所谓直接路径操作,就是绕过buffer cache,直接将数据插入到表所在的数据文件中: 假如有表A,要将A中的数据插入到表B,在普通的间接插入下,先将A中的数据块传进buffer cach ...

  7. 爬虫进阶之Selenium和chromedriver,动态网页(Ajax)数据抓取

    什么是Ajax: Ajax(Asynchronouse JavaScript And XML)异步JavaScript和XML.过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新.这意 ...

  8. CentOS6.7下的软件安装

    一.JDK安装及其环境变量的配置 **创建一个专门安装软件的文件夹:mkdir /root/apps **解压安装包:tar -zxvf jdk-7u45-linux-x64.tar.gz -C /r ...

  9. Python基础:条件与循环

    条件语句 除了 boolean 类型的数据,条件判断最好是显性的 if i != 0: ... 而不是只写出变量名: if i: ... For循环与While循环 通常来说,如果你只是遍历一个已知的 ...

  10. python3爬虫之Urllib库(二)

    在上一篇文章中,我们大概讲了一下urllib库中最重要的两个请求方法:urlopen()  和  Request() 但是仅仅凭借那两个方法无法执行一些更高级的请求,如Cookies处理,代理设置等等 ...