【斜率优化DP】特别行动队

原创 2012年03月24日 19:28:01

还是斜率优化。还是很简单。略过。注意一下B的那一项是可以分离出来的,和i、j都是无关的,速度快点。这里没有给出实现。

但是C是不能分离的,分离出来,C是和分的数量有关的,就会方程必须增加一维。。。


#include <cstdio>
#include <iostream>
#include <algorithm>
#include <string>
typedef long long ll;
#define max(a,b) (a>b?a:b)
#define min(a,b) (a<b?a:b)

long q[1000005];
long n;
long A;
long B;
long C;
long fight[1000010];
ll sum[1000010];
ll f[1000010];
long que[1000010];
long l = 0;
long r = 0;

inline long getint()
{  
    long ret = 0;  
    char tmp;  
    while (!isdigit(tmp = getchar()));  
    do {  
        ret = (ret << 3)+(ret << 1) + tmp - '0';  
    } while (isdigit(tmp = getchar()));  
    return ret;
}  

ll Calc(long j,long k)
{
	return f[j]-f[k]+A*(sum[j]*sum[j]-sum[k]*sum[k])-B*(sum[j]-sum[k]);
}

int main()
{
	freopen("commando.in","r",stdin);
	freopen("commando.out","w",stdout);
	n = getint();
	A = -getint();
	scanf("%ld%ld",&B,&C);
	for (long i=1;i<n+1;++i)
	{
		fight[i] = getint();	
		sum[i] = sum[i-1]+(ll)fight[i];
	}
	//A < 0
	//Initializaion
	for (long i=1;i<n+1;i++)
		f[i] = -0x7f7f7f7f;

	for (long i=1;i<n+1;i++)
	{
		while (l<r&&Calc(q[l],q[l+1])<=2*A*sum[i]*(sum[q[l]]-sum[q[l+1]]))l++;
		long ch = q[l];long x=sum[i]-sum[ch];
		f[i] = f[ch] + A*x*x+x*B+C;
		while (l<r&&Calc(q[r-1],q[r])*(sum[q[r]]-sum[i])<=Calc(q[r],i)*(sum[q[r-1]]-sum[q[r]]))r--;
		q[++r] = i;
	}
	std::cout << f[n];
	return 0;
}


[APIO2010]特别行动队(斜率优化dp)

【题解】 设s[i]=x[1]+x[2]+……+x[i] 则:f[0]=0     f[i]=max{ f[j]+zdl(s[i]-s[j]) } ( i>0 , 0      若 j不比k...
  • cjk_cjk
  • cjk_cjk
  • 2015年05月06日 02:22
  • 303

[斜率DP优化]BZOJ 1911: [Apio2010]特别行动队 题解

(传送门)题目大意给出一个有n个数的数组aia_i,要求将a分割成若干个区间,每个区间的价值是 令这个区间所有数的和为x,则该区间价值为A*x*x+B*x+C 一个分割方案ans=所有分割的区间的...

BZOJ 1911 APIO 2010 特别行动队 斜率优化DP

题目大意:有一些排列好的士兵,现在要把他们组成一些队伍,每个队伍的战斗力为ax^2 + bx + c,其中x是队伍的权值和。 思路:我还能不能和斜率优化DP好好的玩耍了。。这公式推了三次才推...

bzoj 1911 [Apio2010]特别行动队(斜率优化+DP)

点击打开链接 思路: 斜率优化。 设f[i]表示将前i个分组的最优值,则有转移方程式: f[i]=max{ f[j]+a*(s[i]-s[j])^2+b*(s[i]-s[j])+c } 经过...
  • yxg_123
  • yxg_123
  • 2017年02月23日 15:01
  • 89

【bzoj 1911】 [Apio2010]特别行动队(斜率优化dp)

檐下、窗间,枝桠斜映,一缕茶香袅袅升

【APIO2010】特别行动队(斜率优化dp)

一路走来形单影只 转身回望大家已经远去 即使如此我依然前行 这正是我的坚强...

bzoj 1911 [Apio2010]特别行动队斜率优化+DP

bzoj 1911 特别行动队 传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1911 Description Input ...
  • DJS_K_D
  • DJS_K_D
  • 2015年02月09日 22:42
  • 273

BZOJ 1911-特别行动队(DP+斜率优化)

1911: [Apio2010]特别行动队 Time Limit: 4 Sec  Memory Limit: 64 MB Submit: 4662  Solved: 2253 [Submit][Sta...

[省选前题目整理][BZOJ 1911][APIO 2010]特别行动队(斜率优化DP)

题目链接http://www.lydsy.com/JudgeOnline/problem.php?id=1911思路 注:单调递减的队列里,相邻两个点的连线的斜率是单调递增的,即维护一个下凸壳代码#...
  • qpswwww
  • qpswwww
  • 2015年03月31日 20:35
  • 468

<斜率优化><单调队列>——1.【APIO2010】特别行动队

斜率优化和单调队列的学习总结
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【斜率优化DP】特别行动队
举报原因:
原因补充:

(最多只允许输入30个字)