题目链接

斜率优化的经典模型,将序列分成若干段,每段有一个权值计算方法,求权值和最大/小

暴力的dp $O(n^{2})$

dp[i]为1-i的序列的最优解。sum[i]为前缀和,$D(i)=ax^{2}+bx+c$

转移为$dp[i]=\max_{j=0}^{i-1}dp[j]+D(sum[i]-sum[j])$

然后叒是经典的推公式:

设$k<j<i$,且i从j转移比i从k转移更优。

$dp[j]+a(sum[i]-sum[j])^{2}-b(sum[i]-sum[j])+c\geq dp[k]+a(sum[i]-sum[k])^{2}-b(sum[i]-sum[k])+c$

$dp[j]+asum[j]^{2}-bsum[j]-(dp[k]+asum[k]^{2}-bsum[k])\geq 2asum[i](sum[j]-sum[k])$

$\frac{dp[j]+asum[j]^{2}-bsum[j]-(dp[k]+asum[k]^{2}-bsum[k])}{sum[j]-sum[k]}\geq 2asum[i]$

设   $f[j]=dp[j]+sum[j]^{2}-bsum[j]$   $T[j]=sum[j]$

$\frac{f[j]-f[k]}{T[j]-T[k]}\geq 2asum[i]$

将$(T[j],f[j])$,$(T[k],j[k])$看成二维平面上的点。所以当斜率$K_{jk}\geq 2asum[i]$时,从dp[j]转移比dpk]更优。

所以用优先队列维护最优的点集,就A了。

 #include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 1e6 + ;
ll sum[maxn], q[maxn], dp[maxn], que[maxn];
int n, a, b, c;
ll f(int j, int k) {
return dp[j] + a * sum[j] * sum[j] - b * sum[j] - (dp[k] + a * sum[k] * sum[k] - b * sum[k]);
}
ll T(int j, int k) {
return sum[j] - sum[k];
}
ll D(int x) {
return a * x*x + b * x + c;
}
int main() {
scanf("%d", &n);
scanf("%d%d%d", &a, &b, &c);
for (int i = ; i <= n; i++)
scanf("%lld", &q[i]), sum[i] = sum[i - ] + q[i];
int l = , r = ;
que[l] = ;
for (int i = ; i <= n; i++) {
while (l < r&&f(que[l + ], que[l]) >= * a*sum[i] * T(que[l + ], que[l]))
l++;
dp[i] = dp[que[l]] + D(sum[i] - sum[que[l]]);
while (l < r && f(que[r], que[r - ])*T(i, que[r]) < T(que[r], que[r - ])*f(i, que[r]))
r--;
que[++r] = i;
}
printf("%lld\n", dp[n]);
}

[Bzoj1911][Apio2010]特别行动队(斜率优化)的更多相关文章

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

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

  2. bzoj1911 [Apio2010]特别行动队——斜率优化DP

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1911 相当明显的斜率优化,很好做: 注意slp里面要有(double),以免出现精度问题. ...

  3. [APIO2010]特别行动队 --- 斜率优化DP

    [APIO2010]特别行动队 题面很直白,就不放了. 太套路了,做起来没点感觉了. \(dp(i)=dp(j)+a*(s(i)-s(j))^{2}+b*(s(i)-s(j))+c\) 直接推出一个斜 ...

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

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

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

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

  6. APIO2010 特别行动队 & 斜率优化DP算法笔记

    做完此题之后 自己应该算是真正理解了斜率优化DP 根据状态转移方程$f[i]=max(f[j]+ax^2+bx+c),x=sum[i]-sum[j]$ 可以变形为 $f[i]=max((a*sum[j ...

  7. 【BZOJ1911】[Apio2010]特别行动队 斜率优化DP

    想了好久啊....——黑字为第一次更新.——这里是第二次更新,维护上下凸包据题而论,第一种方法是化式子的方法,需要好的化式子的方法,第二种是偏向几何,十分好想,纯正的维护凸包的方法,推荐. 用了我感觉 ...

  8. 洛谷P3628 [APIO2010]特别行动队 斜率优化

    裸题,注意队列下标不要写错 Code: #include<cstdio> #include<algorithm> #include<cmath> using nam ...

  9. BZOJ1911 [Apio2010]特别行动队 【斜率优化】

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

随机推荐

  1. Maven:mirror和repository

    1 Repository(仓库) 1.1 Maven仓库主要有2种: remote repository:相当于公共的仓库,大家都能访问到,一般可以用URL的形式访问 local repository ...

  2. 详解GSM的基带跳频和射频跳频

    跳频技术源于军事通信,目的是为了获得较好的保密性和抗干扰能力.跳频分为快速和慢速两种,GSM中的跳频属于慢跳频. 跳频方式从时域概念上分为帧跳频和时隙跳频,从载频实现方式上分为射频跳频和基带跳频. 帧 ...

  3. codevs 1002 搭桥x

    题目描述 Description 有一矩形区域的城市中建筑了若干建筑物,如果某两个单元格有一个点相联系,则它们属于同一座建筑物.现在想在这些建筑物之间搭建一些桥梁,其中桥梁只能沿着矩形的方格的边沿搭建 ...

  4. ex1.c

  5. Bootstrap Table 的X-editable插件怎么用

    在准备使用X-editable来做Bootstrap Table 的行内编辑的时候,根据http://www.cnblogs.com/landea... 的文章,我不能将全部效果重复实现,网上也搜索了 ...

  6. MYSQL与Navicat的连接错误问题

    唱,跳,RAP,Basketball MySQL版本安装 遇到的一个坑(密码加密规则被修改导致Navicat连接不上) 众所周知,老师的一些任务,往往做起来不是很困难,只要按着步骤就可以,但是在程序的 ...

  7. java第二周小结

    这是接触Java的第一周,了解这个语言的一些基础知识,下面是对这段时间重要知识点的汇总 一.Java是一种面向对象的语言    特点为:简洁高效.可移植性.适合分布式计算.健壮防患于未然的特性.多线程 ...

  8. 项目三、文件上传器v1.1

    /** * 自定义文件上传工具 v1.1 * @param url 路径 */ function fileUploader(url) { var _date = new Date(); //日期 th ...

  9. AI-人工智能/机器学习 seetafaceJNI

    基于中科院seetaface2进行封装的JAVA人脸识别库,支持人脸识别.1:1比对.1:N比对. 项目介绍 基于中科院seetaface2进行封装的JAVA人脸识别算法库,支持人脸识别.1:1比对. ...

  10. java Map类

    实现类 类型区别 HashMap 最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度.HashMap最多只允许一条记录的键为Null(多条会覆盖);允 ...