HDU 3507 Print Article
来源:互联网 发布:工程量预算软件 编辑:程序博客网 时间:2024/05/20 22:01
利用斜率来优化dp
参考:
http://www.cnblogs.com/ka200812/archive/2012/08/03/2621345.html
#include <cstdio>#include <iostream>#include <string.h>#include <queue>#include <vector>using namespace std;#define ll long longconst int N = 500005;int dp[N], sum[N], q[N];int n, m, head ,tail;int getdp(int i, int j){ return dp[j] + m + (sum[i] - sum[j])*(sum[i] - sum[j]);}int getup(int i, int j){ return dp[i] + sum[i]*sum[i] - dp[j] - sum[j]*sum[j];}int getdown(int i, int j){ return 2 * (sum[i] - sum[j]);}int main(){ while(~scanf("%d%d",&n,&m)){ dp[0] = sum[0] = 0; for(int i = 1; i <= n; i++){ scanf("%d",sum+i); sum[i] = sum[i-1] + sum[i]; } head = tail = 0; q[tail++] = 0; for(int i = 1; i<= n; i++){ while(head+1 < tail && getup(q[head+1],q[head]) <= sum[i] * getdown(q[head+1],q[head])) head++; dp[i] = getdp(i,q[head]); while(head+1 < tail && getup(i,q[tail-1]) * getdown(q[tail-1],q[tail-2]) <= getup(q[tail-1],q[tail-2]) * getdown(i,q[tail-1])) tail--; q[tail++] = i; } printf("%d\n",dp[n]); } return 0;}
0 0
- hdu-3507-Print Article
- hdu 3507 Print Article
- hdu 3507 Print Article
- HDU 3507 Print Article
- 【HDU 3507】 Print Article
- hdu 3507Print Article
- hdu-3507 Print Article
- HDU 3507 Print Article
- HDU 3507 Print Article
- HDU 3507 Print Article
- Print Article[HDU 3507]
- HDU 3507 Print Article
- hdu 3507 Print Article
- hdu 3507 Print Article
- Hdu-3507 Print Article
- HDU 3507 Print Article
- [HDU 3507] Print Article
- hdu 3507 Print Article
- POJ 1751 Highways 最小生成树 Kruskal && Prim
- Android 实现ListView的A-Z字母排序和过滤搜索功能,实现汉字转成拼音
- 关于lingo的例子
- Java学习之路0813(HttpClient中的doGet和doPost实例)
- Android之Service启动方式
- HDU 3507 Print Article
- Http请求通过线程添加超时处理
- SDL源码阅读笔记(1) 基本模块
- maven3常用命令
- 马士兵视频中的生产者与消费者的经典问题
- hibernate对应的bean。表里是int型的数据,bean要用Integer类型。
- IDEA下使用Jetty进行Debug模式调试
- robotframework+selenium2Library使用遇到的问题
- 原生JavaScript addClass() removeClass()