BZOJ 1911: [Apio2010]特别行动队( dp + 斜率优化 )
2015-09-15 21:00
323 查看
![](http://images2015.cnblogs.com/blog/723896/201509/723896-20150915205149961-641418772.png)
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
); return 0;}--------------------------------------------------------------------------------
1911: [Apio2010]特别行动队
Time Limit: 4 Sec Memory Limit: 64 MBSubmit: 2998 Solved: 1354
[Submit][Status][Discuss]
Description
![](http://www.lydsy.com/JudgeOnline/images/1911_1.jpg)
Input
![](http://www.lydsy.com/JudgeOnline/images/1911_2.jpg)
Output
![](http://www.lydsy.com/JudgeOnline/images/1911_3.jpg)
Sample Input
4-1 10 -20
2 2 3 4
Sample Output
9HINT
![](http://www.lydsy.com/JudgeOnline/images/1911_4.jpg)
Source
相关文章推荐
- Ubuntu下安装redis
- 运行read_xml.c时出现的问题_xml文件操纵第二步
- Mat结构
- 在VCKBASE上读到《一种漂亮的自绘菜单》 [作者:郑恒 (lbird)]
- NEtWorking_四种数据请求方法
- Linux信号编程实践(一) 信号概述
- linux /boot FHS翻译
- IOS GoodsModel 详解
- CCF-命令行选项-201403-3
- +【CSS3】使用纯css代码实现图片轮播效果
- Java中抽象类和接口的区别
- 指针常量和常量指针
- BZOJ 1097 [POI2007]旅游景点atr dijikstra+状压DP
- Missing Number @leetcode
- unicode码的分布情况
- Java学习之利用集合发牌小练习
- 数据结构-栈
- 浮躁的过去,开启的项目管理之路(一)
- Oracle学习笔记20150915常见循环语句以及goto语句
- TCP协议三次握手