这个题目又是一个典型的dp斜率优化的题目。题意是给你n个数,你需要做的是把这个n个数分为连续的若干段,每段的权值为这段数字的和的平方加上M。求最小的总权值。

我们可以根据题意写出朴素版的dp状态转移方程。然后就可以推导出使用优先队列来维护最优值。总共包括对首和队尾的两个操作。

很简单,很朴素的题目,直接上代码吧。。。。就是范围定义小了,然后Wa了n^n^n^n^……发。 深坑啊。。。

#include <iostream>
#include <cstdio>
#include <cstring>
#define maxn 500500
#define ll long long
using namespace std; ll f[maxn],a[maxn],sum[maxn];
ll n,m,xx,yy,xx1,yy1;
ll q[maxn],head,tail; ll dy(ll j1,ll j2) { return f[j2]+sum[j2]*sum[j2]-f[j1]-sum[j1]*sum[j1]; } ll dx(ll j1,ll j2) { return *(sum[j2]-sum[j1]); } int main()
{
while (scanf("%I64d%I64d",&n,&m)!=EOF)
{
for (ll i=; i<=n; i++) scanf("%I64d",&a[i]),sum[i]=sum[i-]+a[i];
head=tail=,q[]=;
for (ll i=; i<=n; i++)
{
while (tail-head>)
{
xx=dx(q[head],q[head+]);
yy=dy(q[head],q[head+]);
if (sum[i]*xx>=yy) head++;
else break;
}
f[i]=f[q[head]]+(sum[i]-sum[q[head]])*(sum[i]-sum[q[head]])+m;
while (tail-head>)
{
yy=dy(q[tail-],q[tail]);
xx=dx(q[tail-],q[tail]);
yy1=dy(q[tail],i);
xx1=dx(q[tail],i);
if (yy*xx1>=yy1*xx) tail--;
else break;
}
q[++tail]=i;
}
printf("%I64d\n",f[n]);
}
return ;
}

HDU3507_Print Article的更多相关文章

  1. Python爬取CSDN博客文章

    0 url :http://blog.csdn.net/youyou1543724847/article/details/52818339Redis一点基础的东西目录 1.基础底层数据结构 2.win ...

  2. http://blog.csdn.net/java2000_wl/article/details/8627874

    http://blog.csdn.net/java2000_wl/article/details/8627874

  3. [Android Pro] http://blog.csdn.net/wuyinlei/article/category/5773375

    http://blog.csdn.net/wuyinlei/article/category/5773375

  4. android 蓝牙 http://blog.csdn.net/u012843100/article/details/52384219

    http://blog.csdn.net/u012843100/article/details/52384219

  5. HTML中的div,section,article的区别

    刚开始看到标签的就有些疑惑,觉得为什么有那么多相同用途的标签,多方查询资料细细比较之后才发现原来各有千秋,结合自己的想法总结如下: div在HTML早期版本就支持了,section和article是H ...

  6. article和section

    article和section都是指页面中的块,但是article更加强调独立性,而section常被用来分块. section使用禁忌: 1.不要把section当作定义样式的容器,因为那是div的 ...

  7. http://blog.csdn.net/krislight/article/details/9391455

    http://blog.csdn.net/krislight/article/details/9391455

  8. http://blog.csdn.net/shawnkong/article/details/52045894

    http://blog.csdn.net/shawnkong/article/details/52045894

  9. Urban Planning and Public Health - Reflection on Professor Webster's article in Urban Planning Forum

    1. General review. Professor Webster published this article in Urban Planning Forum, one of the top ...

随机推荐

  1. noone is not in the sudoers file ubuntu

      Login as root or su to get root prompt type visudo an editor will open find a line says root ALL=( ...

  2. luogu 2051 [AHOI2009]中国象棋

    luogu 2051 [AHOI2009]中国象棋 真是一道令人愉♂悦丧心并框的好题... 首先"没有一个炮可以攻击到另一个炮"有个充分条件就是没有三个炮在同一行或同一列.证明:显 ...

  3. mysql-5.7.17-winx64免安装版环境配置 问题小记

    安装版问题请自行百度或google 这里总结几个免安装版mysql-5.7.17-winx64配置后,出现问题的解决方法. 具体的环境配置请先参考mysql-5.7.17-winx64免安装版,win ...

  4. Selenium2+python自动化-CSS定位语法

    前言 一些人在使用selenium定位元素时,用的是xpath定位,因为xpath基本能解决定位的需求.css定位往往被忽略掉了,其实css定位也有它的价值,css定位更快,语法更简洁.这一篇css的 ...

  5. (转)使用Python和OpenCV检测图像中的物体并将物体裁剪下来

    原文链接:https://blog.csdn.net/liqiancao/article/details/55670749 介绍 硕士阶段的毕设是关于昆虫图像分类的,代码写到一半,上周五导师又给我新的 ...

  6. Qt 链接报错 version `Qt_5' not found

    问题: 在Ubuntu 上发布软件包的时候,复制链接库的时候出现Qt 版本找不到的情况: ./libqxcb.so: /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so ...

  7. Beta阶段第2周/共2周 Scrum立会报告+燃尽图 02

    此作业要求参见:[https://edu.cnblogs.com/campus/nenu/2018fall/homework/2410] 版本控制地址   https://git.coding.net ...

  8. "Hello World"团队召开的第三周第七次会议

    今天是我们团队“Hello World!”团队召开的第三周的第七次会议.博客内容: 一.会议时间 二.会议地点 三.会议成员 四.会议内容 五.Todo List 六.会议照片 七.燃尽图 一.会议时 ...

  9. 《JavaScript》JS中的跨域问题

    参考博客:https://www.cnblogs.com/yongshaoye/p/7423881.html

  10. 第一章 JavaScript简介

    DOM级别 DOM1:映射文档的结构 DOM2: DOM视图,定义了跟踪不同文档视图的接口(例如CSS应用前后的文档) DOM事件,定义了事件和事件处理的接口 DOM样式,定义了基于CSS为元素应用样 ...