题目链接

  设c[i]是战斗力前缀和,f[i]是考虑前i个,且最后一组分到第i个士兵为止的战斗力之和

  则有朴素状态转移方程

for(int i=;i<=n;++i)
for(int j=;j<i;++j){
int x=c[i]-c[j];
f[i]=min(f[i],a*x*x+b*x+c);
}

  然后考虑优化。

  假设f[i]最优结果是从f[j]转移过来,同时有一个不那么优的转移f[k]

  则有$f[j]+a*squa(c[i]-c[j])+b*(c[i]-c[j])+c>f[k]+a*squa(c[i]-c[k])+b*(c[i]-c[k])+c$

  展开得到$f[j]+a*squa(c[i])+a*squa(c[j])-2*a*c[i]*c[j]+b*c[i]-b*c[j]>f[k]+a*squa(c[i])+a*squa(c[k])-2*a*c[i]*c[k]+b*c[i]-b*c[k]$

  整理有$f[j]+a*squa(c[j])-2*a*c[i]*c[j]-b*c[j]>f[k]+a*squa(c[k])-2*a*c[i]*c[k]-b*c[k]$

  于是有$\frac{(f[j]+a*c[j]^{2}-b*c[j])-(f[k]+a*c[k]^{2}-b*c[k])}{2*a*(c[j]-c[k])}>c[i]$

  于是可以单调队列优化DP

  

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cctype>
#include<algorithm>
using namespace std;
inline long long read(){
long long num=,f=;
char ch=getchar();
while(!isdigit(ch)){
if(ch=='-') f=-;
ch=getchar();
}
while(isdigit(ch)){
num=num*+ch-'';
ch=getchar();
}
return num*f;
} long long sum[];
long long f[];
long long d[];
long long a,b,c;
inline long long squa(long long x){ return x*x; }
inline double count(int x,int y){ return ( (f[x]+a*d[x]-b*sum[x])-(f[y]+a*d[y]-b*sum[y]) )/(2.0*a*(sum[x]-sum[y])); } int s[];
int h,t; int main(){
int n=read();
a=read();b=read();c=read();
for(int i=;i<=n;++i){
sum[i]=read()+sum[i-];
d[i]=squa(sum[i]);
f[i]=-1e18;
}
for(int i=;i<=n;++i){
while(h<t&&count(s[h],s[h+])<=sum[i]*1.0) h++;
int x=s[h];
f[i]=f[x]+a*squa(sum[i]-sum[x])+b*(sum[i]-sum[x])+c;
while(h<t&&count(s[t-],s[t])>=count(s[t],i)) t--;
s[++t]=i;
}
printf("%lld",f[n]);
return ;
}

【Luogu】P3628特别行动队(斜率优化DP)的更多相关文章

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

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

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

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

  3. APIO 2010 特别行动队 斜率优化DP

    Description 你有一支由 n 名预备役士兵组成的部队,士兵从 1 到 n 编号,要将他们拆分 成若干特别行动队调入战场.出于默契的考虑,同一支特别行动队中队员的编号 应该连续,即为形如 (i ...

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

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

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

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

  6. BZOJ 1911 特别行动队(斜率优化DP)

    应该可以看出这是个很normal的斜率优化式子.推出公式搞一搞即可. # include <cstdio> # include <cstring> # include < ...

  7. luogu3628 特别行动队 (斜率优化dp)

    推出来式子以后斜率优化水过去就完事了 #include<cstdio> #include<cstring> #include<algorithm> #include ...

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

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

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

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

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

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

随机推荐

  1. 从javaweb项目学习

    1.sql语句 在insert语句中需要插入查询出来的值. Insert into a (a1,a2,a3) values (1,select num from b where id=1,3) 这样写 ...

  2. # Volley源码解析(二) 没有缓存的情况下直接走网络请求源码分析#

    Volley源码解析(二) 没有缓存的情况下直接走网络请求源码分析 Volley源码一共40多个类和接口.除去一些工具类的实现,核心代码只有20多个类.所以相对来说分析起来没有那么吃力.但是要想分析透 ...

  3. codevs 1145 Hanoi双塔问题 2007年NOIP全国联赛普及组

    时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题目描述 Description 给定A.B.C三根足够长的细柱,在A柱上放有2n个中间有孔的圆盘,共有n个不同的 ...

  4. vs和github同步开发步骤

    首先,这是在visual studio中使用.需要了解关于vs同步github必不可少.下载安装破解什么的先完成vs. 1. 然后安装一个vs中使用github的插件.vs自带的下载.这个是下载地址. ...

  5. CAD交互绘制块引用对象(网页版)

    主要用到函数说明: _DMxDrawX::DrawBlockReference 绘制块引用对象.详细说明如下: 参数 说明 DOUBLE dPosX 插入点的X坐标 DOUBLE dPosY 插入点的 ...

  6. CPP-基础:运算符重载详解

    1.运算符重载定义: C++中预定义的运算符的操作对象只能是基本数据类型.但实际上,对于许多用户自定义类型(例如类),也需要类似的运算操作.这时就必须在C++中重新定义这些运算符,赋予已有运算符新的功 ...

  7. netstat Recv-Q和Send-Q详解

    http://blog.csdn.net/sjin_1314/article/details/9853163 通过netstat -anp可以查看机器的当前连接状态:   Active Interne ...

  8. vue input 判断

    //输入框 判断 //全局异常提示信息 //b 1:失去焦点验证错误提示 2:得到焦点关闭错误提示 //i 来区分是验证那个input框 check:function (t,b) { var that ...

  9. 更新portage之后 安装 certbot

    运行的时候一直报如下的错误: sudo certbot 错误结果: Traceback (most recent call last): File "/usr/lib/python-exec ...

  10. React初识整理(一)

    一.React的特点 1.自动化的UI状态管理:自动完成数据变化与界面效果的更新. 2.虚拟DOM:创建1个虚拟的dom节点树,放在内存里(内存修改数据效率高),数据变化时先修改内存里的虚拟DOM,然 ...