当前位置: 首页 > news >正文

HDU3507 Print Article

题目传送门


题目描述

给出 \(n\)\(m\) 和序列 \(c\)

可以分多行,一行如果要打印 \(l\)\(r\) 的单词,代价是 \(m+\left(\sum_{i=l}^{r}c_i\right)^2\)

求最小代价和。

第一步肯定是把 \(c\) 做一遍前缀和。

朴素 \(O(n^2)\) dp:

\[dp_i=\min_{0\le j<i}dp_j+(c_i-c_j)^2+m \]

把它斜率优化。

\[dp_i=\min_{0\le j<i}dp_j+c_i^2-2c_ic_j+c_j^2+m \]

\(k>j\) 但决策 \(k\) 比决策 \(j\) 更优时:

\[\begin{aligned} dp_j+c_i^2-2c_ic_j+c_j^2+m&>dp_k+c_i^2-2c_ic_k+c_k^2+m\\ dp_j-2c_ic_j+c_j^2&>dp_k-2c_ic_k+c_k^2\\ 2c_i(c_k-c_j)&>(dp_k+c_k^2)-(dp_j+c_j^2)\\ 2c_i&>\frac{(dp_k+c_k^2)-(dp_j+c_j^2)}{c_k-c_j} \end{aligned} \]

因为 \(2c_i\) 递增,所以直接用单调队列维护就行。

感觉和这个一模一样。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
const int N=5e5+5;
int n,m;
int que[N],h,t;
ll a[N],dp[N];
ll Y(int x){return dp[x]+a[x]*a[x];}
ll X(int x){return a[x];}
bool le(int x,int y,ll k){ll dy=Y(y)-Y(x);ll dx=X(y)-X(x);return dy <= k*dx;
}
bool ge(int x1,int x2,int x3){ll dy1=Y(x2)-Y(x1),dx1=X(x2)-X(x1);ll dy2=Y(x3)-Y(x2),dx2=X(x3)-X(x2);return dy1*dx2>=dy2*dx1;
}
ld slope(int x,int y){return (Y(y)-Y(x))*1.0/(X(y)-X(x));}
int main(){while(~scanf("%d %d",&n,&m)){memset(dp,0x3f,sizeof dp);dp[0]=0;for(int i=1;i<=n;++i) scanf("%lld",a+i),a[i]+=a[i-1];que[h=t=1]=0;for(int i=1;i<=n;++i){while(h<t&&le(que[h],que[h+1],2*a[i])) ++h;int j=que[h];dp[i]=dp[j]+(a[i]-a[j])*(a[i]-a[j])+m;while(h<t&&ge(que[t-1],que[t],i)) --t;que[++t]=i;}printf("%lld\n",dp[n]);}
}
http://www.jsqmd.com/news/1221927/

相关文章:

  • 200+网站小说下载神器:打造你的个人数字图书馆
  • AM62L CPSW与USB外设寄存器深度解析:从线程映射到时间戳生成
  • Android开发环境搭建与配置全指南
  • 亲身探访东莞亨得利官方名表服务中心|全新地址及售后热线(2026年7月更新) - 亨得利官方
  • LLM智能体提示词设计:最小核心原则与Unix环境映射实践
  • 嵌入式ISP编程实战:寄存器访问模型与帧间操作详解
  • 2015年Android开发技术栈与最佳实践回顾
  • 动态开点线段树
  • NVIDIA显卡视频压缩技术:NVENC原理与应用指南
  • 品质升级:2026东芝空调开启24小时售后服务人工电话400号码全天在线 - 优企甄选
  • Windows CE模拟环境配置与调试实战指南
  • Android Timer使用指南:原理、问题与优化实践
  • CRM智能化失败根源:数据仓库先行才是AI落地的物理前提
  • 单片机电源适配器选型指南:参数识别与防反接防护
  • 数据科学七道题:探测建模能力断层的实战压力测试
  • gRPC+Prometheus+KEDA:机器学习模型生产化部署实战
  • Android与Unity集成开发实战:核心挑战与优化方案
  • 北京奢侈品回收,奢侈品折旧太心疼?毓典告诉你:保养好的包能多卖30% - 旧奢新值
  • 工业智能化:YOLO算法与OpenPLC的边缘计算实践
  • 2026 成都郫都区正规空调上门维修师傅推荐|犀浦菁蓉湖全域24小时上门加氟移机、中央空调漏水不制冷专修(权威FAQ+避坑指南) - 星际AI
  • Windows批处理文件(BAT)入门与实用技巧详解
  • K-means面试深度解析:原理、初始化陷阱与工程静默规则
  • 个人网店无货源开店专用抖掌柜一键上货全教程,零基础从合规选品、批量货源采集、AI 违规检测到分批次商品发布完整落地操作流程,附新手避坑指南与自动代发履约步骤 - 电商分享
  • C#与OCX互操作:原理、实践与现代化替代方案
  • Unity Cinemachine平滑跟随与动态预测:打造专业级游戏镜头
  • UE4SS实战指南:从原理到脚本编写,掌握虚幻4游戏Mod开发
  • 2026 年更新:十堰比较好的优秀的35#精密无缝钢管工厂生产商哪家强,揭秘:35钢管的精密制造如何颠覆你的生产线 - 企业官方推荐【认证】
  • FPGA开发实战:从硬件加速原理到工程应用全解析
  • CC256x双模蓝牙控制器选型、设计与实战避坑指南
  • 2026年7月最新劳力士长沙国金中心维修保养服务电话 - 劳力士官方服务中心