2017.3.23 特别行动队 思考记录
注意到不同的两个队效率是互不影响的, 很容易借助区间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 特别行动队 思考记录相关推荐
- 2017.10.23 chess 中国象棋 思考记录
这种题的一般解法: 1. 发现状压可以搞,然后发现状态爆炸 2.考虑状态特点,一共只有几种可能的状态 3.考虑可不可以只对状态进行计数 4.离散统计贡献 码: #include<iostream ...
- 2017.4.23 一元三次方程求解 思考记录
实在太菜了..竟然不知道浮点数有误差... 另外:修改的时候一次要改全!!! 码: #include<iostream> #include<cstdio> using name ...
- 2017.10.5 最短母串 思考记录
这个题n<=15,可以用10表示选取情况下的最优值 预处理两个串之间的连接关系,然后枚举状态转移 然而这个题还要输出方案,,而且还不让你开空间. 所以只能记录前继动态判断.. 所以十分难写难调 ...
- 2017.9.26 块的计数 思考记录
这种题就属于那种描述很简单,要求很简单,但就是无从下手的题 这个题我只有n根n做法..枚举因数检验.. 首先对于任何块的大小,方案唯一,这是显然的,,如果划分位置改变1,一定有一个位置+1,一个位置- ...
- 2017.9.18 HH的项链 思考记录
莫队模板题..以前还有一个队列的做法,但似乎莫队更直观 注意: 空间大小 cmp函数 n.m不能混 码: #include<iostream> #include<cstdio> ...
- 2017.8.8 魔兽地图DotR 思考记录
假题害人.. 明明说了是一棵树,却还要强行加一组坑爹数据 所以网上的题解挂了好多 这题是很综合的树上背包问题. 由依赖关系转化为一些枚举来跑多重背包 由于是 "一棵树" 所以 ...
- 2017.3.25 魔术球问题 思考记录
这个题还是不难的..(想了20分钟就出完解) 二分+网络流检验,,能加在上面的数大的向小的连边 总点数-最大匹配>n :{l=mid+1, 记录答案 } else ...
- 2017.10.19 起床困难综合征 思考记录
2333noi送分题 首先暴力试每个数有些二进制位是会重复算的,,所以就考虑能否把每个二进制位独立考虑 老性质:二进制运算每一位独立 所以二进制dp,如果这一位输入1,是多少,输入0,是多少 然后按二 ...
- 2017.10.11 network 网络扩容 思考记录
第一问是网络流. 第二问是费用流,但之前的边依然是可以用的,所以每个点决策:用原来的流量 购买一条流量,扫每条边加进去就可以了 然后限制流出为k 码: #include<iostream& ...
最新文章
- 《机器学习实战》chapter04 使用Python进行文本分类
- Hadoop 分布式集群搭建步骤
- win10系统下载-靠谱推荐
- 37 Reasons why your Neural Network is not working
- C#热度不如Java?网友呛声:还有使用C#不能完成的工作?
- python直方图的拟合_从一组数据python中将两个高斯拟合成直方图
- 下拉菜单(含有阻止事件冒泡)
- 『後起Android开发02』对SharedPreferences和Toast的简单封装
- Android字符串资源及其格式化
- tp3.2 相同应用绑定多个入口文件,不同的入口文件可以绑定不同的模块
- 计算机文化基础—计算机软件
- 网管管理软件的作用及发展趋势
- Ubuntu输入法使用回车键后字符间距异常的问题
- 如何用微云永久外链MP3做QQ空间背景音乐?
- smartbi连接mysql数据库_Smartbi_V9配置MySQL8作为知识库
- WPF无边框窗体拖动
- 剑指offe--构建乘积数组
- 2019_WSDM_Social Attentional Memory Network Modeling Aspect- and Friend-level Differences in Recomme
- 深度学习—BP神经网络
- 使用 ChatterBot 做简单的机器人
热门文章
- crash分析中有用的管道命令
- poj 2263 最短路变形——最小边的最大值
- 使用WORD封面自带模板?
- python以追加方式打开文件 线程安全吗_多线程追加文件,不加锁,会出现什么情况 ?...
- 11_less中的条件判断
- 命令重置_学个简单命令,一秒重置账户密码
- android stringbuilder 一次插入多条数据_android开发面试题解析
- html轮播图原理,30_用js实现一个轮播图效果,简单说下原理
- 2_Recurrent Neural Networks (RNNs)循环神经网络 —Simple RNNs
- ROS中阶笔记(九):Movelt!机械臂控制