当前位置: 首页 > 编程日记 > 正文

HDU 3507:Print Article

HDU 3507:Print Article

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3507

题目大意:给定$n$,$m$,输出序列$n$个数,每连续输出代价为连续输出的数字和的平方加上$m$.

斜率优化DP

定义$sum_{pq}=\sum_{k=p+1}^qa_k=pre[q]-pre[p]$,其中$pre[]$维护的是前缀和.

直接DP:$dp[i]=min\{dp[q]+sum_{qi}+m\}(q<i)$,如此复杂度为$O(n^2)$,故需要优化.

设$p<q$,若从$q$转移而来比从$p$更优,则有$dp[q]+sum_{qi}+m<dp[p]+sum_{pi}+m$,

化简可得,$\frac{(dp[q]+pre[q]^2)-(dp[p]+pre[p]^2)}{2pre[q]-2pre[p]}<pre[i]$.

定义映射$f$,使得$k\xrightarrow{f} (2pre[k],dp[k]+pre[k]^2)$,$g[p,q]$为$f(p)$和$f(q)$两点的斜率,

则有,若$g[p,q]<pre[i]$,则$q$比$p$更优.

当$p<k<q$且$g[p,k]>g[k,q]$时,不难证明$k$一定不为最优:

当$g[k,q]<pre[i]$时,$q$比$k$更优;当$g[k,q]\geqslant pre[i]$时,有$g[p,k]>pre[i]$,故$p$比$k$更优.

考虑$pre[i]$数列的单调性,我们只需维护一个斜率递增的队列即可.

by_barriery

代码如下:

 1 #include <cstdio>
 2 #define N 500005
 3 using namespace std;
 4 typedef long long ll;
 5 int n,m,dp[N],a[N],pre[N],deq[N],r,f;
 6 int y(int n){return dp[n]+pre[n]*pre[n];}
 7 int x(int n){return 2*pre[n];}
 8 int main(void){
 9     while(~scanf("%d%d",&n,&m)){
10         r=-1,f=0;
11         deq[++r]=0;
12         for(int i=1;i<=n;++i){
13             scanf("%d",&a[i]);
14             pre[i]=pre[i-1]+a[i];
15         }
16         for(int i=1;i<=n;++i){
17             while(r-f>0){
18                 if(y(deq[f+1])-y(deq[f])
19                    <=pre[i]*(x(deq[f+1])-x(deq[f])))
20                     f++;
21                 else break;
22             }
23             dp[i]=dp[deq[f]]+(pre[i]-pre[deq[f]])*(pre[i]-pre[deq[f]])+m;
24             while(r-f>0){
25                 if((y(deq[r])-y(deq[r-1]))*(x(i)-x(deq[r]))
26                     >=(y(i)-y(deq[r]))*(x(deq[r])-x(deq[r-1])))
27                     r--;
28                 else break;
29             }
30             deq[++r]=i;
31         }
32         printf("%d\n",dp[n]);
33     }
34 }

转载于:https://www.cnblogs.com/barrier/p/6816390.html

相关文章:

Linux wait函数解析

进程一旦调用了 wait&#xff0c;就 立即阻塞自己&#xff0c;由wait自动分析是否当前进程的某个子进程已经退出&#xff0c;如果让它找到了这样一个已经变成僵尸的子进程&#xff0c;wait 就会收集这个子进程的信息&#xff0c; 并把它彻底销毁后返回&#xff1b;如果没有找到…

Python多阶段框架实现虚拟试衣间,超逼真!

作者 | 李秋键 责编 | 晋兆雨 头图 | CSDN下载自视觉中国 任意姿态下的虚拟试衣因其巨大的应用潜力而引起了人们的广泛关注。然而&#xff0c;现有的方法在将新颖的服装和姿势贴合到一个人身上的同时&#xff0c;很难保留服装纹理和面部特征(面孔、毛发)中的细节。故在论文《Do…

百度重置页面自动跳转脚本

大家都知道的原因&#xff0c;百度现在不允许其它搜索引擎直接进入的它旗下的所有站点&#xff0c;在痛苦的被增加了很多点击后写了这个自动跳转的脚本。 原来不只搜索引擎&#xff0c;其它网站的链接也被搞了&#xff0c;nnd&#xff0c;诅咒百度。 使用方法&#xff1a;用xxx…

MYSQL 数据库迁移 ***

1. 导出数据库数据mysqldump -uroot -p webCompile > webCompileOut.sql其中&#xff1a;root 是账户名webCompile 是需要导出的数据库名称webCompileOut.sql 存储导出的数据2. 将导出SecureCRT sz【下载】的数据webCompileOut.sql放到你的目标机器…

exec函数族的使用

调用shell脚本命令&#xff1a;execlp("sh","sh","filename",(char*)0);exec用被执行的程序完全替换调用它的程序的影像。fork创建一个新的进程就产生了一个新的PID&#xff0c;exec启动一个新程序&#xff0c;替换原有的进程&#xff0c;因此这…

全球首个突破200种语言互译的翻译引擎,百度翻译打破世界沟通壁垒

机器翻译作为人工智能关键技术之一&#xff0c;正日益成为企业智能化升级的重要应用场景。12月1日&#xff0c;百度大脑开放日举办了以“机器翻译 沟通全世界”为主题的专场活动。 IDC 中国副总裁兼首席分析师武连峰、百度 AI 技术生态部总经理刘倩、百度人工智能技术委员会主席…

倍福TwinCAT(贝福Beckhoff)基础教程5.1 TwinCAT-2 运行可执行文件

个人认为这条命令做的参数比较混乱&#xff0c;PATHSTR是指可执行文件路径最终文件名&#xff0c;DIRNAME是指可执行文件路径&#xff0c;最后COMNDLINE可有可无&#xff0c;是指带参数运行启动的文件 测试可以正常运行

Linux系统的大小端模式

大端模式所谓的大端模式&#xff0c;是指数据的低位&#xff08;就是权值较小的后面那几位&#xff09;保存在内存的高地址中&#xff0c;而数据的高位&#xff0c;保存在内存的低地址中&#xff0c;这样的存储模式有点儿类似于把数据当作字符串顺序处理&#xff1a;地址由小向…

CSDN插件限时内测,新用户抢永久免费去广告特权!

经过程序猿哥哥们和产品小姐姐马不停蹄的疯狂加班&#xff0c;CSDN 官方出品的PC浏览器插件–开发者助手 终于正式上线啦&#xff01;一键万能操作&#xff0c;新标签页极简个性&#xff0c;让你的浏览器更酷更高效&#xff01;还有超多实用彩蛋功能等你来解锁&#xff01;现在…

你必须知道的.net学习总结

着几天在看《你必须知道的.net》&#xff0c;这次看书和以往不同&#xff0c;以前是把自己喜欢的章节看了。但是这次决定把一本书详细的看看。 在第一章第一节中主要讲的是“对象”,我想每一个程序员都对&#xff0c;“对象”有理解。 我来说说书中所说的对象吧。。 我只是把认…

Mybatis 基本配置, 面向接口

< 一 > 主配置文件 <?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration><…

据说看完这21个故事的人,30岁前都成了亿万富翁。你是下一个吗?

1.甲去买烟&#xff0c;烟29元&#xff0c;但他没火柴&#xff0c;跟店员说&#xff1a;“顺便送一盒火柴吧。”店员没给。 乙去买烟&#xff0c;烟29元&#xff0c;他也没火柴&#xff0c;跟店员说&#xff1a;“便宜一毛吧。”最后&#xff0c;他用这一毛买一盒火柴。 这是…

助力视障人士,微软等公司捐赠首批AI有声内容

12月2日&#xff0c;微软与周迅AI语音红丹丹公益项目发起人鹿音苑文化传播公司&#xff0c;以及来自微软及各界的150名余志愿者&#xff0c;将创作的首批人工智能有声内容&#xff0c;包括鲁迅、老舍、萧红、朱自清等作家的一系列经典作品、红丹丹文化期刊&#xff0c;正式捐赠…

能和LoadRunner匹敌的VS2010/2012Web负载测试

VS自带的Web负载测试真的很大程度上能和专业的loadrunner媲美&#xff08;只是Web方面&#xff09;&#xff0c;上个report图吧&#xff08;如何实现&#xff0c;请往下拉&#xff09;&#xff1a; 看&#xff0c;能探测一堆的计数器&#xff08;上面红色打叉的是代表超过了基线…

设置编码格式为utf8

response.setCharacterEncoding("UTF-8"); 在Servlet2.3中是不行的&#xff0c;至少要2.4版本才可以&#xff0c;如果低于2.4版本&#xff0c;可以用如下办法&#xff1a; response.setContentType("text/html;charsetUTF-8"); pageEncoding"UTF-8&qu…

Linux 命令集锦

linux下查看监听端口对应的进程 # lsof -i:9000 # lsof -Pnl M -i4# lsof -i | grep 9054 如果退格键变成了&#xff1a;"^h"。 终端连接unix删除退格键&#xff0c;按住CTL键同时按deleteLinux搜索 # find / -name "xxx.conf"查看linux是32位还是64位的命…

mysql (双主,互主)

Master-Master&#xff08;双主&#xff09; 1、测试环境 Master/Slave Master1/Slave1 IP 192.168.1.13 192.168.1.10 为了保持干净的环境&#xff1a;两边服务器 rm -rf /var/lib/mysql/* service mysqld re…

熬夜都要看完的 Python 干货!

结合我最近这些年的Python学习、开发经验&#xff0c;发现超90%的人在初学Python时都会遇到下面这些问题&#xff1a;没经验不知道怎么开始学&#xff0c;应用方向太多了根本不知道该怎么选择&#xff01;各基础入门看似简单&#xff0c;但一到进阶部分就举步维艰&#xff0c;遇…

Linux下二进制文件安装MySQL

MySQL 下载地址&#xff1a;https://dev.mysql.com/downloads/mysql/ 并按如下方式选择来下载安装包。 1. 设置配置文件/etc/my.cnmore /etc/my.cnf [client] port 3306 socket /tmp/mysql.sockdefault-character-setutf8[mysqld] usermysql port 3306 server_id 1 socket/…

解决远程桌面无法连接问题

如果 出现的提示如下&#xff1a;---------------------------中断远程桌面连接---------------------------客户端无法建立跟远程计算机的连接。导致这个错误的可能的原因是:1) 远程计算机上的远程连接可能没有启用。2) 已超出远程计算机上的连接最大数。3) 建立连接时出现了一…

这些算法在印度农村医疗中发挥极大作用,未来还将发挥哪些作用?

作者 | Apoorva Mandavilli译者 | Jhonny&#xff0c;责编 | Carol来源 | Unitimes在结核病猖獗的印度农村等地方&#xff0c;用于扫描肺部X射线的 AI 技术可能有助于消除这种疾病之苦。印度农村马哈拉施特拉邦的 Chinchpada Mission 医院在世界上一些最偏远和最贫困的角落&…

四层和七层交换技术-loadbalance

1 四层交换技术简介 我们知道&#xff0c;二层交换机是根据第二层数据链路层的MAC地址和通过站表选择路由来完成端到端的数据交换的。三层交换机是直接根据第三层网络层IP地址来完成端到端的数据交换的。四 层交换机不仅可以完成端到端交换&#xff0c;还能根据端口主机的应用特…

sql server mvp 發糞塗牆

http://blog.csdn.net/dba_huangzj/article/details/38295753

几行代码完成动态图表绘制 | Python实战

作者 | 小F来源 | 法纳斯特头图 | CSDN下载自视觉中国关于动态条形图&#xff0c;小F以前推荐过「Bar Chart Race」这个库。三行代码就能实现动态条形图的绘制。有些同学在使用的时候&#xff0c;会出现一些错误。一个是加载文件报错&#xff0c;另一个是生成GIF的时候报错。这…

inline-block元素4px空白间隙的解决办法

为什么80%的码农都做不了架构师&#xff1f;>>> http://www.hujuntao.com/archives/inline-block-elements-the-4px-blank-gap-solution.html 转载于:https://my.oschina.net/i33/blog/124448

Ubuntn删除软件

删除dpkg -r 软件清除dpkg -P 软件也可以用sudo apt-get remove 软件 这种方式移除这种方式install的

对象Equals相等性比较的通用实现

对象Equals相等性比较的通用实现 最近编码的过程中&#xff0c;使用了对象本地内存缓存&#xff0c;缓存用了Dictionary<string,object>, ConcurrentDictionary<string,oject>,还可以是MemoryCache(底层基于Hashtable)。使用缓存&#xff0c;肯定要处理数据变化缓存…

Android:ViewPager为页卡内视图组件添加事件

在数据适配器PagerAdapter的初始化方法中添加按钮事件&#xff0c;这里是关键&#xff0c;首先判断当前的页卡编号。必须使用当前的view来获取按钮。 Overridepublic Object instantiateItem(View arg0, int arg1) {if (arg1 < 3) {((ViewPager) arg0).addView(mListViews.g…

解析C语言中的sizeof

一、sizeof的概念 sizeof是C语言的一种单目操作符&#xff0c;如C语言的其他操作符、--等。它并不是函数。sizeof操作符以字节形式给出了其操作数的存储大小。操作数可以是一个表达式或括在括号内的类型名。操作数的存储大小由操作数的类型决定。 二、sizeof的使用方法 1、用于…

开源大咖齐聚2020启智开发者大会,共探深度学习技术未来趋势

​2020年12月2日&#xff0c;“OpenI/O 2020启智开发者大会”在北京国家会议中心召开。大会以“启智筑梦 开源先行”为主题&#xff0c;立足于国际国内开源大环境和发展趋势。开源领域顶尖专家学者和企业领军人物共聚一堂&#xff0c;探讨开源开放呈现出的新形势、新格局、新机…