sum为战斗力的前缀和

dp(x) = max( dp(p)+A*(sumx-sump)2+B*(sumx-sump)+C )(0≤p<x)

然后斜率优化...懒得写下去了...

--------------------------------------------------------------------------------

#include<bits/stdc++.h>
 
using namespace std;
 
typedef long long ll;
 
const int maxn = 1000009;
 
int N, A, B, C, Q[maxn], qh, qt;
ll w[maxn], dp[maxn];
 
inline ll f(int x) {
return dp[x] + ll(A) * w[x] * w[x];
}
 
inline ll g(int x, int p) {
return dp[p] + ll(A) * (w[x] - w[p]) * (w[x] - w[p]) + ll(B) * (w[x] - w[p]) + C;
}
 
int main() {
scanf("%d%d%d%d", &N, &A, &B, &C);
w[0] = 0;
for(int i = 1; i <= N; i++) {
scanf("%d", w + i);
w[i] += w[i - 1];
}
qh = qt = 0;
Q[qt++] = 0;
dp[0] = 0;
for(int i = 1; i <= N; i++) {
ll t = 2LL * A * w[i] + B;
while(qt - qh >= 2 && f(Q[qh + 1]) - f(Q[qh]) > t * (w[Q[qh + 1]] - w[Q[qh]])) qh++;
dp[i] = g(i, Q[qh]);
while(qt - qh >= 2 && (ll) (f(i) - f(Q[qt - 1])) * (w[Q[qt - 1]] - w[Q[qt - 2]]) > (ll) (f(Q[qt - 1]) - f(Q[qt - 2])) * (w[i] - w[Q[qt - 1]])) qt--;
Q[qt++] = i;
}
printf("%lld\n", dp[N]);
return 0;
}

--------------------------------------------------------------------------------

1911: [Apio2010]特别行动队

Time Limit: 4 Sec  Memory Limit: 64 MB
Submit: 2998  Solved: 1354
[Submit][Status][Discuss]

Description

Input

Output

Sample Input

4
-1 10 -20
2 2 3 4

Sample Output

9

HINT

Source

最新文章

  1. JMeter专题系列(三)元件的作用域与执行顺序
  2. 三款SDR平台对比:HackRF,bladeRF和USRP
  3. XmlElement 类
  4. 时隔3年半Spring.NET 2.0终于正式Release了
  5. 【HTML5 4】《HTML5与CSS3权威指南》 step1 导读
  6. HtmlAgilityPack 总结(一)
  7. pydev新工程
  8. pyqt显示指定范围的数字
  9. MyBatis 注解
  10. HTTP2概述
  11. Mac电脑上一款非常时尚高清的动态壁纸Living Wallpaper HD
  12. [dev][socket] unix domain socket删除socket文件
  13. Java集合类源码解析:AbstractMap
  14. redis复制
  15. MT【294】函数定义的理解
  16. mysql 案例 ~ 表空间迁移数据与数据导入
  17. getInitParameter方法
  18. mysql 分组取每个组的前几名的问题
  19. 编译错误 ----- /usr/bin/ld: cannot find -lc
  20. php源码建博客1--搭建站点-实现登录页面

热门文章

  1. Hibernate学习之缓存简析
  2. LINQ的用法
  3. [转]JSon数据解析的四种方式
  4. 设置MAVEN_OPTS的推荐方法
  5. QSlider解决点击不能到该位置问题
  6. cocos2dx中的层CCLayer
  7. 如何调试MFC中的内存泄漏
  8. Linux常用命令总结——文件管理
  9. C++对C语言的非面向对象特性扩充(3)
  10. OD调试篇3-小软件破解1