注意到不同的两个队效率是互不影响的, 很容易借助区间dp模型写出n^2级别dp

f[i]=max(  f[i]  ,  f[j]+(qsum[i]-qsum[j])^2*a+(qsum[i]-qsum[j])*b+c  )

但对于10^6的数据是会超时的

所以应该是斜率优化、、

第一次写,尝试拆为:

f[i]=f[j]+a*qsum[i]^2   +   a*qsum[j]^2   -   2*a*qsum[i]*qsum[j]   + b*qsum[i]  -  b*qsum[j]  +  c

f[i]-a*qsum[i]^2-b*qsum[i]  =   f[j]+a*qsum[j]^2-b*qsum[j]+c                                -2*a*qsum[i]*qsum[j];

没错,,这个2*a*qsum[i]*qsum[j+1]消不掉了;;

于是乎看题解、、

好吧,思路错了,,本来想直接用j表示,,结果是i和j共同代表一个x、、(其实就是不会

所以是 2*a*qsum[i]*qsum[j]  +   f[i]-a*qsum[i]^2-b*qsum[i]-c    =      f[j]+a*qsum[j]^2-b*qsum[j]  ;;;

就是  设A=2*a*qsum[i]          X=qsum[j]           B=f[i]-a*qsum[i]^2-b*qsum[i]-c         Y=f[j]+a*qsum[j]^2-b*qsum[j]

在枚举i的情况下,A(斜率)是定值,变的只有B,,

因为f[i]在B里,是唯一和i有关的变量,x、y只和j相关,所以相当于找点(x,y)使B尽量大;;而A、X都是单调的:qsum[]作为前缀和必然递增(xi>0)  由于a<0,所以A单减   B单增

由于A单减,所以下一个i的答案只有可能在这一个i的答案之后

所以维护凸包即可(维护凸包是保证其局部单调性)

码:

#include<iostream>
#include<cstdio>
using namespace std;
#define ll long long
#define N 1000009
struct P
{ll x,y;
}q[N],now;
ll A,B,C,n,i,x,qsum[N],l,r;
ll cha(P a,P b,P c)
{return ((b.x-a.x)*(c.y-a.y)>=(c.x-a.x)*(b.y-a.y));
}int main()
{scanf("%lld%lld%lld%lld",&n,&A,&B,&C);for(i=1;i<=n;i++){scanf("%lld",&qsum[i]);qsum[i]+=qsum[i-1];}//cout<<qsum[n];l=0;r=0;for(i=1;i<=n;i++){ll a=qsum[i]*A*2;while(l<r&&q[l+1].y-a*q[l+1].x>=q[l].y-a*q[l].x)l++;now.x=qsum[i];now.y=q[l].y-a*q[l].x+a*qsum[i]+C;//cout<<now.x<<" ";while(l<r&&cha(q[r-1],now,q[r])<=0)--r;q[++r]=now;}printf("%lld",q[r].y+B*qsum[n]-A*qsum[n]*qsum[n]);} 

2017.3.23 特别行动队 思考记录相关推荐

  1. 2017.10.23 chess 中国象棋 思考记录

    这种题的一般解法: 1. 发现状压可以搞,然后发现状态爆炸 2.考虑状态特点,一共只有几种可能的状态 3.考虑可不可以只对状态进行计数 4.离散统计贡献 码: #include<iostream ...

  2. 2017.4.23 一元三次方程求解 思考记录

    实在太菜了..竟然不知道浮点数有误差... 另外:修改的时候一次要改全!!! 码: #include<iostream> #include<cstdio> using name ...

  3. 2017.10.5 最短母串 思考记录

    这个题n<=15,可以用10表示选取情况下的最优值 预处理两个串之间的连接关系,然后枚举状态转移 然而这个题还要输出方案,,而且还不让你开空间. 所以只能记录前继动态判断.. 所以十分难写难调 ...

  4. 2017.9.26 块的计数 思考记录

    这种题就属于那种描述很简单,要求很简单,但就是无从下手的题 这个题我只有n根n做法..枚举因数检验.. 首先对于任何块的大小,方案唯一,这是显然的,,如果划分位置改变1,一定有一个位置+1,一个位置- ...

  5. 2017.9.18 HH的项链 思考记录

    莫队模板题..以前还有一个队列的做法,但似乎莫队更直观 注意: 空间大小 cmp函数 n.m不能混 码: #include<iostream> #include<cstdio> ...

  6. 2017.8.8 魔兽地图DotR 思考记录

    假题害人..  明明说了是一棵树,却还要强行加一组坑爹数据   所以网上的题解挂了好多 这题是很综合的树上背包问题. 由依赖关系转化为一些枚举来跑多重背包 由于是 "一棵树" 所以 ...

  7. 2017.3.25 魔术球问题 思考记录

    这个题还是不难的..(想了20分钟就出完解) 二分+网络流检验,,能加在上面的数大的向小的连边 总点数-最大匹配>n    :{l=mid+1,      记录答案       } else   ...

  8. 2017.10.19 起床困难综合征 思考记录

    2333noi送分题 首先暴力试每个数有些二进制位是会重复算的,,所以就考虑能否把每个二进制位独立考虑 老性质:二进制运算每一位独立 所以二进制dp,如果这一位输入1,是多少,输入0,是多少 然后按二 ...

  9. 2017.10.11 network 网络扩容 思考记录

    第一问是网络流. 第二问是费用流,但之前的边依然是可以用的,所以每个点决策:用原来的流量    购买一条流量,扫每条边加进去就可以了 然后限制流出为k 码: #include<iostream& ...

最新文章

  1. 《机器学习实战》chapter04 使用Python进行文本分类
  2. Hadoop 分布式集群搭建步骤
  3. win10系统下载-靠谱推荐
  4. 37 Reasons why your Neural Network is not working
  5. C#热度不如Java?网友呛声:还有使用C#不能完成的工作?
  6. python直方图的拟合_从一组数据python中将两个高斯拟合成直方图
  7. 下拉菜单(含有阻止事件冒泡)
  8. 『後起Android开发02』对SharedPreferences和Toast的简单封装
  9. Android字符串资源及其格式化
  10. tp3.2 相同应用绑定多个入口文件,不同的入口文件可以绑定不同的模块
  11. 计算机文化基础—计算机软件
  12. 网管管理软件的作用及发展趋势
  13. Ubuntu输入法使用回车键后字符间距异常的问题
  14. 如何用微云永久外链MP3做QQ空间背景音乐?
  15. smartbi连接mysql数据库_Smartbi_V9配置MySQL8作为知识库
  16. WPF无边框窗体拖动
  17. 剑指offe--构建乘积数组
  18. 2019_WSDM_Social Attentional Memory Network Modeling Aspect- and Friend-level Differences in Recomme
  19. 深度学习—BP神经网络
  20. 使用 ChatterBot 做简单的机器人

热门文章

  1. crash分析中有用的管道命令
  2. poj 2263 最短路变形——最小边的最大值
  3. 使用WORD封面自带模板?
  4. python以追加方式打开文件 线程安全吗_多线程追加文件,不加锁,会出现什么情况 ?...
  5. 11_less中的条件判断
  6. 命令重置_学个简单命令,一秒重置账户密码
  7. android stringbuilder 一次插入多条数据_android开发面试题解析
  8. html轮播图原理,30_用js实现一个轮播图效果,简单说下原理
  9. 2_Recurrent Neural Networks (RNNs)循环神经网络 —Simple RNNs
  10. ROS中阶笔记(九):Movelt!机械臂控制