bzoj 3156: 防御准备【斜率优化dp】
就是套路咯,设s[i]为1+2+...i
首先列出dp方程\( f[i]=min(f[j]+a[i]+(i-j)*i-(s[i]-s[j])) \)
然后推一推
\]
\]
\]
\]
就没啦
#include<iostream>
#include<cstdio>
using namespace std;
const int N=1000005,inf=1e9;
int n,q[N],l,r;
long long a[N],f[N],s[N];
int read()
{
	int r=0,f=1;
	char p=getchar();
	while(p>'9'||p<'0')
	{
		if(p=='-')
			f=-1;
		p=getchar();
	}
	while(p>='0'&&p<='9')
	{
		r=r*10+p-48;
		p=getchar();
	}
	return r*f;
}
double wk(int j,int k)
{
	return (double)(f[j]+s[j]-f[k]-s[k])/(double)(j-k);
}
int main()
{
	n=read();
	for(int i=1;i<=n;i++)
		a[i]=read(),s[i]=s[i-1]+i;
	// for(int i=1;i<=n;i++)
	// {
		// f[i]=inf;
		// for(int j=0;j<i;j++)
			// f[i]=min(f[i],f[j]+a[i]+(i-j)*i-(s[i]-s[j]));
	// }
	for(int i=1;i<=n;i++)
	{
		while(l<r&&wk(q[l+1],q[l])<i)
			l++;
		f[i]=f[q[l]]+a[i]+1ll*(i-q[l])*i-(s[i]-s[q[l]]);
		while(l<r&&wk(q[r-1],q[r])>wk(q[r],i))
			r--;
		q[++r]=i;
	}
	printf("%lld\n",f[n]);
	return 0;
}
bzoj 3156: 防御准备【斜率优化dp】的更多相关文章
- BZOJ 3156: 防御准备 斜率优化DP
		3156: 防御准备 Description Input 第一行为一个整数N表示战线的总长度. 第二行N个整数,第i个整数表示在位置i放置守卫塔的花费Ai. Output 共一个整数,表示最小的战 ... 
- bzoj3156防御准备 斜率优化dp
		3156: 防御准备 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 2279 Solved: 959[Submit][Status][Discuss ... 
- 【BZOJ3156】防御准备 斜率优化DP
		裸题,注意:基本的判断(求Min还是Max),因为是顺着做的,且最后一个a[i]一定要取到,所以是f[n]. DP:f[i]=min(f[j]+(i-j-1)*(i-j)/2+a[i]) 依旧设x&g ... 
- BZOJ3156 防御准备  斜率优化dp
		Description Input 第一行为一个整数N表示战线的总长度. 第二行N个整数,第i个整数表示在位置i放置守卫塔的花费Ai. Output 共一个整数,表示最小的战线花费值. Sampl ... 
- bzoj 3156 防御准备(斜率DP)
		3156: 防御准备 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 837 Solved: 395[Submit][Status][Discuss] ... 
- [BZOJ3156]防御准备(斜率优化DP)
		题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3156 分析: 简单的斜率优化DP 
- BZOJ 1010: [HNOI2008]玩具装箱toy 斜率优化DP
		1010: [HNOI2008]玩具装箱toy Description P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京.他使用自己的压缩器进行压缩,其可以将任意物品变成一堆,再 ... 
- BZOJ 1010: 玩具装箱toy (斜率优化dp)
		Description P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京.他使用自己的压缩器进行压缩,其可以将任意物品变成一堆,再放到一种特殊的一维容器中.P教授有编号为1... ... 
- BZOJ 1010: [HNOI2008]玩具装箱toy(斜率优化dp)
		http://www.lydsy.com/JudgeOnline/problem.php?id=1010 题意: 思路: 容易得到朴素的递归方程:$dp(i)=min(dp(i),dp(k)+(i-k ... 
- BZOJ 1010 [HNOI2008]玩具装箱 (斜率优化DP)
		题目链接 http://www.lydsy.com/JudgeOnline/problem.php?id=1010 思路 [斜率优化DP] 我们知道,有些DP方程可以转化成DP[i]=f[j]+x[i ... 
随机推荐
- reactNative 打包那些事儿
			我们项目测试时一般是debug版本,打包上线,一般是release版本,所以在测试和打包时会走不同的方法,如上图所示. 在debug版本中,会走我们本地服务器,也就是自己电脑上的服务.在release ... 
- python 爬虫示例,方便日后参考
			参考网址:https://zhuanlan.zhihu.com/p/32037625 def getOneMoviesInfo(Mid,url): import requests from lxml ... 
- [luoguP2401] 不等数列
			传送门 f[i][j]表示前i个数有j个<的方案数 #include <cstdio> #define N 1001 #define p 2015 int n, k; int f[N ... 
- poj  3648  2-sat 输出任意一组解模板
			转载地址:http://blog.csdn.net/qq172108805/article/details/7603351 /* 2-sat问题,题意:有对情侣结婚,请来n-1对夫妇,算上他们自己共n ... 
- android开发里跳过的坑——图片文件上传失败
			使用的apache的httpclient的jar包,做的http图片上传,上传时,服务器总返文件格式不对.后来发现,是由于在创建FileBody时,使用了默认的ContentType引起的.所以服务器 ... 
- how to read openstack code : wsgi
			要读懂本篇,你至少得写过一个python的web程序,并且把它部署到web服务器上过. 什么是wsgi 假设你写了一个python的web程序,并部署到了nginx上,那么一个http request ... 
- Why It is so hard to explain or show some thing
			Why it is hard to explain something or learn something? For example, when I first know the hadoop, I ... 
- 我的arcgis培训照片10
			来自:http://www.cnblogs.com/gisoracle/p/4297439.html 
- omnidazzle是mac的画笔工具
			先使用命令 brew cask install omnidazzle 试试,不行参考下面: http://macappstore.org/omnidazzle/ 
- no matching function transform?
			http://stackoverflow.com/questions/19876746/stdtolower-and-visual-studio-2013 http://forums.codeguru ... 
