动态规划(算法竞赛、蓝桥杯)--斜率优化DP打印文章

1、B站视频链接:E51【模板】斜率优化DP 打印文章_哔哩哔哩_bilibili

题目链接:Problem - 3507

cpp 复制代码
#include <bits/stdc++.h> 
using namespace std;
typedef long long LL;
const int N=500010;
int n,m,q[N];
LL s[N],f[N];

double sl(int i,int j){
	return (double)(f[i]+s[i]*s[i]-f[j]-s[j]*s[j])
				/(s[i]==s[j]?1e-9:s[i]-s[j]);
}
int main(){
	while(~scanf("%d%d",&n,&m)){
		for(int i=1;i<=n;i++){
			scanf("%lld",&s[i]);
			s[i]+=s[i-1];
		}
	}
	int h=1,t=0;
	for(int i=1;i<=n;i++){
		while(h<t&&sl(i-1,q[t])<=sl(q[t],q[t-1]))t--;
		q[++t]=i-1;
		while(h<t&&sl(q[h+1],q[h])<=2*s[i])h++;
		int j=q[h];
		f[i]=f[j]+(s[i]-s[j])*(s[i]-s[j])+m;
	}
	printf("%lld\n",f[n]);
	return 0;
}
相关推荐
极客学术工坊18 小时前
2023年第十三届MathorCup高校数学建模挑战赛-C题 电商物流网络包裹应急调运与结构优化问题
数学建模·动态规划·启发式算法
想唱rap20 小时前
Linux开发工具(4)
linux·运维·服务器·开发语言·算法
前端炒粉20 小时前
21.搜索二维矩阵 II
前端·javascript·算法·矩阵
星释20 小时前
Rust 练习册 :Rail Fence Cipher与栅栏密码
开发语言·算法·rust
东方隐侠安全团队-千里20 小时前
第3节 RSA算法开启公钥加密时代
网络·人工智能·算法
7澄121 小时前
深入解析 LeetCode 1:两数之和
算法·leetcode·职场和发展·arraylist
Moonbit21 小时前
MGPIC 初赛提交倒计时 4 天!
后端·算法·编程语言
Miraitowa_cheems21 小时前
LeetCode算法日记 - Day 98: 分割回文串 II
数据结构·算法·leetcode·深度优先·动态规划
立志成为大牛的小牛21 小时前
数据结构——三十九、顺序查找(王道408)
数据结构·学习·程序人生·考研·算法