hdu 4258 斜率DP
思路: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的更多相关文章
- B - Lawrence HDU - 2829 斜率dp dp转移方程不好写
B - Lawrence HDU - 2829 这个题目我觉得很难,难在这个dp方程不会写. 看了网上的题解,看了很久才理解这个dp转移方程 dp[i][j] 表示前面1~j 位并且以 j 结尾分成了 ...
- hdu 3507 斜率dp
不好理解,先多做几个再看 此题是很基础的斜率DP的入门题. 题意很清楚,就是输出序列a[n],每连续输出的费用是连续输出的数字和的平方加上常数M 让我们求这个费用的最小值. 设dp[i]表示输出前i个 ...
- D - Pearls HDU - 1300 斜率dp+二分
D - Pearls HDU - 1300 这个题目也是一个比较裸的斜率dp,依照之前可以推一下这个公式,这个很好推 这个注意题目已经按照价格升序排列序,所以还是前缀和还是单调的. sum[i] 表示 ...
- 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做法 ...
- HDU 4258 斜率优化dp
Covered Walkway Time Limit: 30000/10000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Othe ...
- HDU 3480 斜率dp
Division Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 999999/400000 K (Java/Others)Total ...
- hdu 2993 斜率dp
思路:直接通过斜率优化进行求解. #include<iostream> #include<cstdio> #include<algorithm> #include& ...
- HDU 4258 Covered Walkway 斜率优化DP
Covered Walkway Problem Description Your university wants to build a new walkway, and they want at ...
- HDU 3480 - Division - [斜率DP]
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3480 Time Limit: 10000/5000 MS (Java/Others) Memory L ...
随机推荐
- 反转链表[剑指offer]之python实现
输入一个链表,输出反转后的链表. 非递归实现: # -*- coding:utf-8 -*- # class ListNode: # def __init__(self, x): # self.val ...
- IBM MQ Explore使用
一,版本说明: 系统:win10.MQ:V9.04 二.关于帮助文档: 1.读了差不多一大半,个人感觉说明的比较生僻,应该是直译过来的.但是还是可以从这里面学一下基本的操作. 2.对于一些基本的操作, ...
- 课时21.img标签(掌握)
1.img标签中的img其实是英文image的缩写,所以img标签的作用,就是告诉浏览器我们需要显示一张图片 2.img标签格式:<img src=" "> img是 ...
- thinkphp 3.2.3 程序执行时序图
- PHP 作用域
- 关于Linux系统下zookeeper集群的搭建
1.集群概述 1.1什么是集群 1.1.1集群概念 集群是一种计算机系统, 它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一台计算机.集群系 ...
- libevent 信号事件实现方式
学会使用libevent,才能真正的掌握其是实现原理,我们先从一个简短的测试用例开始: #include <sys/types.h> #include <sys/stat.h> ...
- hihocoder1015 kmp算法
#1015 : KMP算法 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在 ...
- nowcoder N约数个数
n的约数个数 题目:t次询问,每次给你一个数n,求在[1,n]内约数个数最多的数的约数个数 数据:对于100%的数据,t <= 500 , 1 <= n <= 10000000000 ...
- COGS:313. [POI2001] 和平委员会
313. [POI2001] 和平委员会 ★★☆ 输入文件:spo.in 输出文件:spo.out 评测插件时间限制:1 s 内存限制:128 MB 题目描述 根据宪法,Bytelan ...