DP/斜率优化


  嗯……第三道斜率优化的题目了。

  定义 $s[i]=\sum_{k=1}^{i} x[k] $

  方程:$f[i]=max\{ f[j]+a*(s[i]-s[j])^2+b*(s[i]-s[j])+c \} $

  对于 $ j > k $

  若决策 j 比 k 更优:\[ \begin{aligned} {f[j] + a*(s[i]-s[j])^2+b*(s[i]-s[j])+c} &> {f[k]+a*(s[i]-s[k])^2+b*(s[i]-s[k])+c} \\  {f[j]-f[k]+a*(s[j]^2-s[k]^2)-b*(s[j]-s[k])} &> {2a*s[i]*(s[j]-s[k])} \\ \frac{ f[j]-f[k]+a*(s[j]^2-s[k]^2)-b*(s[j]-s[k]) } { 2a*(s[k]-s[j]) } &> {s[i]} \end{aligned} \]

 /**************************************************************
Problem: 1911
User: Tunix
Language: C++
Result: Accepted
Time:1260 ms
Memory:28616 kb
****************************************************************/ //BZOJ 1911
#include<cmath>
#include<vector>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#define rep(i,n) for(int i=0;i<n;++i)
#define F(i,j,n) for(int i=j;i<=n;++i)
#define D(i,j,n) for(int i=j;i>=n;--i)
#define pb push_back
using namespace std;
int getint(){
int v=,sign=; char ch=getchar();
while(ch<''||ch>''){ if (ch=='-') sign=-; ch=getchar();}
while(ch>=''&&ch<=''){ v=v*+ch-''; ch=getchar();}
return v*=sign;
}
const int N=1e6+;
typedef long long LL;
/******************tamplate*********************/
LL f[N],x[N],s[N];
int q[N],a,b,c;
double slop(int k,int j){
return double(f[j]-f[k]+a*(s[j]*s[j]-s[k]*s[k])+b*(s[k]-s[j]))/
double(*a*(s[j]-s[k]));
}
int main(){
#ifndef ONLINE_JUDGE
freopen("1911.in","r",stdin);
freopen("1911.out","w",stdout);
#endif
int n=getint();
a=getint(),b=getint(),c=getint();
F(i,,n){ x[i]=getint(); s[i]=s[i-]+x[i];}
int l=,r=;
F(i,,n){
while(l<r && slop(q[l],q[l+])<s[i])l++;
int t=q[l];
f[i]=f[t]+a*((s[i]-s[t])*(s[i]-s[t]))+b*(s[i]-s[t])+c;
while(l<r && slop(q[r-],q[r])>slop(q[r],i))r--;
q[++r]=i;
}
printf("%lld\n",f[n]);
return ;
}

1911: [Apio2010]特别行动队

Time Limit: 4 Sec  Memory Limit: 64 MB
Submit: 3036  Solved: 1367
[Submit][Status][Discuss]

Description

Input

Output

Sample Input

4
-1 10 -20
2 2 3 4

Sample Output

9

HINT

Source

[Submit][Status][Discuss]

【BZOJ】【1911】【APIO2010】特别行动队commando的更多相关文章

  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. bzoj1911 [Apio2010]特别行动队commando

    题目链接 斜率优化 #include<cstdio> #include<cstdlib> #include<string> #include<cstring& ...

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

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

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

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

随机推荐

  1. 调用WCF Data Service的几点Tips

    使用Linq实现sql in statement的时候,用EF的时候可以通过Contains.Exists的方法实现.但是在使用WCF Data Service的context的时候,会报不支持该方法 ...

  2. js各种宽高(3)

    有时候项目中会用到用js获取元素位置来定位元素,首先通过图片说明scrollWidth,clientWidth,offsetWidth的关系. JS获取各种宽度.高度的简单介绍: scrollHeig ...

  3. php文件hash算法,秒传原理

    header('Content-type:text/html;Charset=UTF-8'); define('blockSize', 4*1024*1024); var_dump(fileHash( ...

  4. SequoiaDB(巨杉数据库)(社区版)安装配置使用图解

    SequoaiDB是一款新型企业级分布式非关系型数据库,提供了基于PC服务器的大规模集群数据平台.作为全球第一家企业级文档式 NoSQL分布式数据库,为用户提供了一个高扩展性.高可用性.高性能.易维护 ...

  5. 【积硅计划】http协议基础

    http:超文本传输协议,它允许将超文本标记(html)文档从web服务器传送到浏览器.目前版本HTTP/1.1   http请求过程:   proxy:代理服务器,网络信息的中转站.功能如下:   ...

  6. 一个表格说明RelativeLayout中的几个重要属性【Written By KillerLegend】

      RelativeLayout中几种布局属性的说明 无 无 无 无

  7. C# 乘法口诀表的实现方法

    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 乘法运算 ...

  8. 老外写的在桌面添加快捷方式(DELPHI XE5 ANDROID)

    UsesAndroidapi.JNI.GraphicsContentViewText, FMX.Helpers.Android,Androidapi.JNI.JavaTypes, FMX.Platfo ...

  9. Web Design:给实验室UI们的一堂课(下)

    [讲稿]From top to down,自顶向下哈,首部栏.导航栏之后一般是页面的主模块,也就是Body部分,这一块儿才是你网站的核心内容,文章.新闻.动态.数据.图表.相册等都是在这儿体现出来.在 ...

  10. wpf mvvm MenuItem的Command事件

    这是一个事件的辅助类,可以通过它实现MenuItem的Command事件 public class MyCommands : Freezable, ICommand, ICommandSource { ...