Description

Input

Output

Sample Input

4
-1 10 -20
2 2 3 4

Sample Output

9

HINT

 
转移方程
f[i]=max(f[j]+a*(h[i]-h[j])^2+b*(h[i]-h[j])+c)
//h数组为前缀和
如此显然的方程复杂度是O(n^2) 的

设j>k且j比k右,则有
f[j]+a*(h[i]-h[j])^2+b*(h[i]-h[j])+c>f[k]+a*(h[i]-h[k])^2+b*(h[i]-h[k])+c
移项可得
f[j]-f[k]+a*h[j]^2-a*h[k]^2-b*h[j]+b*h[k]>2*a*(h[j]-h[k])*h[i]
由此方程我们可以建立一个队列
当队首元素与第二个元素k,j不满足上式时,队首++
取出第一个元素O(1)的更新f[j]
判断队尾的两个元素,以维护上凸的性质

 #include<cstdio>
#define ll long long
const int N=;
int a,b,c,n,l,r;
int x[N],q[N];
ll f[N],h[N];
ll sqr(ll x) {return x*x;}
double slop(int k,int j)
{return (double)(f[j]-f[k]+a*sqr(h[j])-a*sqr(h[k])-b*h[j]+b*h[k])/(double)(*a*(h[j]-h[k]));} int main(){
scanf("%d",&n);
scanf("%d%d%d",&a,&b,&c);
for (int i=;i<=n;i++) {
scanf("%d",&x[i]);
h[i]=h[i-]+x[i];
}
for (int i=;i<=n;i++){
while(l<r&&slop(q[l],q[l+])<h[i])l++;
int now=q[l];
f[i]=f[now]+a*sqr((h[i]-h[now]))+b*(h[i]-h[now])+c;
while(l<r&&slop(q[r],i)<slop(q[r-],q[r])) r--;
q[++r]=i;
}
printf("%lld",f[n]);
}

【BZOJ 1911】 [Apio2010]特别行动队的更多相关文章

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

    1911: [Apio2010]特别行动队 Time Limit: 4 Sec  Memory Limit: 64 MBSubmit: 4142  Solved: 1964[Submit][Statu ...

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

    1911: [Apio2010]特别行动队 Time Limit: 4 Sec  Memory Limit: 64 MBSubmit: 3191  Solved: 1450[Submit][Statu ...

  3. BZOJ 1911: [Apio2010]特别行动队( dp + 斜率优化 )

    sum为战斗力的前缀和 dp(x) = max( dp(p)+A*(sumx-sump)2+B*(sumx-sump)+C )(0≤p<x) 然后斜率优化...懒得写下去了... ------- ...

  4. bzoj 1911: [Apio2010]特别行动队 -- 斜率优化

    1911: [Apio2010]特别行动队 Time Limit: 4 Sec  Memory Limit: 64 MB Description Input Output Sample Input 4 ...

  5. bzoj 1911: [Apio2010]特别行动队

    #include<cstdio> #include<iostream> #define M 1000009 #define ll long long using namespa ...

  6. bzoj 1911: [Apio2010]特别行动队【斜率优化dp】

    仔细想想好像没学过斜率优化.. 很容易推出状态转移方程\( f[i]=max{f[j]+a(s[i]-s[j])^2+b(s[i]-s[j])+c} \) 然后考虑j的选取,如果选j优于选k,那么: ...

  7. 【BZOJ】1911: [Apio2010]特别行动队(斜率优化dp)

    题目 传送门:QWQ 分析 用$ dp[i] $ 表示前 i 个人组成的战斗力之和 然后显然$ dp[i]=Max (  dp[j]+a*(sum[i]-sum[j])^2+b*(sum[i]-sum ...

  8. 1911: [Apio2010]特别行动队(斜率优化)

    链接 思路 斜率优化dp. 代码 #include<cstdio> #include<algorithm> #include<cstring> #include&l ...

  9. 1911: [Apio2010]特别行动队

    Time Limit: 4 Sec  Memory Limit: 64 MBSubmit: 5706  Solved: 2876[Submit][Status][Discuss] Descriptio ...

  10. bzoj1911[Apio2010]特别行动队 斜率优化dp

    1911: [Apio2010]特别行动队 Time Limit: 4 Sec  Memory Limit: 64 MBSubmit: 5057  Solved: 2492[Submit][Statu ...

随机推荐

  1. LeetCode 338

    Given a non negative integer number num. For every numbers i in the range 0 ≤ i ≤ num calculate the ...

  2. [设计模式]<<设计模式之禅>>关于接口隔离原则

    在讲接口隔离原则之前,先明确一下我们的主角——接口.接口分为两种: ● 实例接口(Object Interface),在Java中声明一个类,然后用new关键字产生一个实例,它是对一个类型的事物的描述 ...

  3. 【线性结构上的动态规划】UVa 11584 - Partitioning by Palindromes

    回文串问题.给出一个字符串,问最少可以划分为多少个字符串子串. 对于判断是否为回文串,对于不是很长的字符串,可以采取直接暴力,即从两边向中间收缩判断字符相等. bool is_pali(int l, ...

  4. RestEasy传值方式

    一.@pathparam    @PathParam 是一个参数注解,可以将一个 URL 上的参数映射到方法的参数上,它可以映射到方法参数的类型有基本类型.字符串.或者任何有一个字符串作为构造方法参数 ...

  5. C# 文件的读取、写入和删除

    class Program { static void Main(string[] args) { EmployeeDAL DAL = new EmployeeDAL(); List<Sys_E ...

  6. COGS 265 线段覆盖

    265. 线段覆盖 ★★☆   输入文件:xdfg.in   输出文件:xdfg.out   简单对比时间限制:2 s   内存限制:20 MB [问题描述] 有一根长度为 L 的白色条状物.有两种操 ...

  7. HTTP - 持久连接

    Web 客户端经常会打开到同一个站点的连接.比如,一个 Web 页面上的大部分内嵌图片通常都是来自同一个 Web 站点,而且相当一部分指向其他对象的超链接通常都指向同一个站点.因此,初始化了对某服务器 ...

  8. HDOJ2015偶数求和

    偶数求和 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  9. Ajax之数据连接信息捕获

      connDB.properties: DB_CLASS_NAME=com.mysql.jdbc.Driver DB_URL=jdbc:mysql://127.0.0.1:3306/db_datab ...

  10. 搭建私有git代码托管服务就是这么简单(简单5步)

    部署一个git代码托管服务就是这么简单 --基于阿里云ecs以docker容器运行gogs代码托管服务 部署步骤: 1.新建ecs云主机,选定操作系统为ubuntu 12.4tls 2.搭建docke ...