题目链接

  设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. arcgis jsapi接口入门系列(5):几何(点线面)基本操作

    点 point: function () { //通过wkt生成点 //wkt,代表点的坐标 let wkt = "POINT(113.566806 22.22445)"; //w ...

  2. c#网站对服务器的数据库的备份与还原

    在网站上备份数据库 1.前台页面 <div> 需要备份的文件名:<asp:TextBox ID="bfFile" runat="server" ...

  3. Oracle种常用性能监控SQL语句

    --Oracle常用性能监控SQL语句 --1 SELECT * FROM SYS.V_$SQLAREA WHERE DISK_READS > 100; --2 监控事例的等待 SELECT E ...

  4. SQL 基本编程

    定义变量 赋值 取值 分支语句 循环语句 定义变量 declare @变量   数据类型          //@必须带着  不然程序不知道变量是什么  不带@   电脑会报错 例如 declare ...

  5. JavaScript面试系列:JavaScript设计模式之桥接模式和懒加载

    我写的程序员面试系列文章 Java面试系列-webapp文件夹和WebContent文件夹的区别? 程序员面试系列:Spring MVC能响应HTTP请求的原因? Java程序员面试系列-什么是Jav ...

  6. codeforce Gym 100203I I WIN (网络流)

    把'I'拆成容量为1一条边,一个入点一个出点,入点和相邻的'W'连一条容量为1的边,出点和相邻的'N'连一条容量为1,所有的'W'和源点连一条容量为1边,所有的'N'和汇点连一条容量为1的边,表示只能 ...

  7. ftl-server静态资源服务器

    ftl-server 是一前端开发工具,支持解析freemarker模板,模拟后端接口,反向代理等功能. 特性 解析freemarker模板 静态资源服务 mock请求 代理请求 livereload ...

  8. 多数据源连接Oracle报错,linux熵池耗尽问题

    最近碰到了个很有意思的问题,springboot加载多数据源,遇到了在启动时数据库连接报错的问题. 报错信息: The error occurred while executing a query 然 ...

  9. 简单jQuery图片自适应宽度插件jQuery.imgAutoSize.js

    (function ($) {       var loadImg = function (url, fn) {         var img = new Image();         img. ...

  10. RN原生的安卓UI组件

    https://facebook.github.io/react-native/docs/native-components-android.html 这里有一大堆的原生组件可以用,一些是平台自带的, ...