分治类dp:1017T3

news2024/11/25 5:51:10

http://cplusoj.com/d/senior/p/SS231017C

感觉可以分治某个区间 [ l , r ] [l,r] [l,r],且他们都是在下面 k k k 已经选的基础上

然后肯定要枚举最大值,最大值越长越好


Hint 1

在这里插入图片描述

Hint 2

f ( l , r , k ) f(l, r, k) f(l,r,k) 可以通过枚举 m i d mid mid,或者枚举 k ′ k' k 进行暴力转移


根据Hint1,我们区间最大如果选则必然是选整个区间,高度是最小值,然后往最小值两边递归

同理,如果最大值不选则是往最大值两边递归

这是一个按最大最小分治的过程,可以通过记忆化来优化

#include<bits/stdc++.h>
using namespace std;
#define int long long
inline int read(){int x=0,f=1;char ch=getchar(); while(ch<'0'||
ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){
x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}return x*f;}
#define Z(x) (x)*(x)
#define pb push_back
//mt19937 rand(time(0));
//mt19937_64 rand(time(0));
//srand(time(0));
#define N 3010
//#define M
//#define mo
struct Num {
	int x, id; 
}mx[N][22], mn[N][22];
int n, m, i, j, k, T;
int a[N], Log2[N]; 
map<pair<int, int>, int>f[N]; 

Num max(Num a, Num b) {
	return (a.x>b.x ? a : b); 
}

Num min(Num a, Num b) {
	return (a.x<b.x ? a : b); 
}


Num Mx(int l, int r) {
	int k = Log2[r-l+1]; 
	return max(mx[l][k], mx[r-(1<<k)+1][k]); 
}

Num Mn(int l, int r) {
	int k = Log2[r-l+1]; 
	return min(mn[l][k], mn[r-(1<<k)+1][k]); 
}

int S(int r, int n) { // 末项、公差 
	int l = r - n + 1; 
	return (l+r)*n/2; 
}

int dfs(int l, int r, int k) {
	if(l>r) return 0; 
	if(f[l].find({r, k})!=f[l].end()) return f[l][{r, k}]; 
	Num x, y; x=Mx(l, r); y=Mn(l, r); 
	int ans=1e18; 
//	printf("%lld %lld\n", x.id, y.id); 
	ans=min(ans, a[x.id]-k+dfs(l, x.id-1, k)+dfs(x.id+1, r, k)); 
	ans=min(ans, S(a[x.id]-k, a[y.id]-k)+dfs(l, y.id-1, a[y.id])+dfs(y.id+1, r, a[y.id])); 
	return f[l][{r, k}]=ans; 
}

signed main()
{
///	freopen("in.txt", "r", stdin);
//	freopen("out.txt", "w", stdout);
	freopen("cake.in","r",stdin);
	freopen("cake.out","w",stdout);
//	T=read();
//	while(T--) {
// 
//	}
	n=read(); 
	for(i=1; i<=n; ++i) a[i]=read();
	for(i=1; i<=n; ++i) mx[i][0].x=a[i], mx[i][0].id=i; 
	for(i=1; i<=n; ++i) mn[i][0].x=a[i], mn[i][0].id=i; 
	for(i=2; i<=n; ++i) Log2[i]=Log2[i>>1]+1; 
	for(k=1; k<=20; ++k)
		for(i=1, j=(1<<k-1)+1; i+(1<<k)-1<=n; ++i, ++j)
			mx[i][k]=max(mx[i][k-1], mx[j][k-1]), 
			mn[i][k]=min(mn[i][k-1], mn[j][k-1]); 
	printf("%lld", dfs(1, n, 0)); 
	return 0;
}


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1101582.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深入理解强化学习——强化学习智能体的四要素:模型(Model)

分类目录&#xff1a;《深入理解强化学习》总目录 相关文章&#xff1a; 强化学习智能体的四要素&#xff1a;策略&#xff08;Policy&#xff09; 强化学习智能体的四要素&#xff1a;收益信号&#xff08;Revenue Signal&#xff09; 强化学习智能体的四要素&#xff1a;价…

ubunu 18.04 LTS安装Qt-5.14-2并一起安装Qt Creator

作为初级qt用户&#xff0c;一定下载Qt的.run安装文件。 之前我安装5.15.10版本的源码&#xff0c;安装后一头雾水。 后来&#xff0c;我安装了低一点的版本5.14.2&#xff0c;它含有.run安装文件&#xff0c;比较顺利。 下面记录一下ubunu 18.04 LTS安装Qt-5.14-2并一起安装Q…

基于深度学习的目标检测模型综述

基于深度学习的目标检测模型综述 一 概论目标检测主要挑战评估指标 二 展望 一 概论 目标检测是目标分类的自然延伸&#xff0c;目标分类仅旨在识别图像中的目标。目标检测的目标是检测预定义类的所有实例并通过轴对齐的框提供其在图像中的初略定位。检测器应能够识别所有目标…

Python数据挖掘入门进阶与实用案例:自动售货机销售数据分析与应用

文章目录 写在前面01 案例背景02 分析目标03 分析过程04 数据预处理1. 清洗数据2.属性选择3.属性规约 05 销售数据可视化分析1.销售额和自动售货机数量的关系2.订单数量和自动售货机数量的关系3.畅销和滞销商品4.自动售货机的销售情况5.订单支付方式占比6.各消费时段的订单用户…

乾坤qiankun(微前端)样式隔离解决方案--使用插件替换前缀

一、前言 qiankun作为微前端的一种融合方式&#xff0c;目前也比较成熟&#xff0c;但是由于各类开发技术选型非常繁多&#xff0c;导致了在项目中配置不同&#xff0c;解决别人的问题&#xff0c;不一定能解决自己的问题。 使用的js框架的不同或版本的不同&#xff1a;vue/r…

手部关键点检测3:Pytorch实现手部关键点检测(手部姿势估计)含训练代码和数据集

手部关键点检测3&#xff1a;Pytorch实现手部关键点检测(手部姿势估计)含训练代码和数据集 目录 手部关键点检测3&#xff1a;Pytorch实现手部关键点检测(手部姿势估计)含训练代码和数据集 1. 前言 2.手部关键点检测(手部姿势估计)方法 (1)Top-Down(自上而下)方法 (2)Bot…

mac虚拟机安装homebrew时的问题

安装了mac虚拟机&#xff0c;结果在需要通过“brew install svn”安装svn时&#xff0c;才注意到没有下载安装homebrew。 于是便想着先安装homebrew&#xff0c;网上查的教程大多是通过类似以下命令 “ruby <(curl -fsSkL raw.github.com/mxcl/homebrew/go)” 但是都会出现…

防火墙管理工具增强网络防火墙防御

防火墙在网络安全中起着至关重要的作用。现代企业具有多个防火墙&#xff0c;如&#xff1a;电路级防火墙、应用级防火墙和高级下一代防火墙&#xff08;NGFW&#xff09;的复杂网络架构需要自动化防火墙管理和集中式防火墙监控工具来确保边界级别的安全。 网络防火墙安全和日…

STM32F0的TIM1高级定时器(未完待续)

文章目录 1.高级、通用和基本定时器的区别2.TIM1高级定时器介绍2.1 时基单元2.1.1寄存器2.1.2 预分频器2.1.3 计数器2.1.4 重复计数器 2.2 计数时钟2.3 捕捉/比较通道2.3.1 通道结构 输出类型14-12&#xff1a;定时器霍尔传感器配置结构定义 函数14-100 1.高级、通用和基本定时…

探索云原生技术之容器编排引擎-Kubernetes/K8S详解(8)

❤️作者简介&#xff1a;2022新星计划第三季云原生与云计算赛道Top5&#x1f3c5;、华为云享专家&#x1f3c5;、云原生领域潜力新星&#x1f3c5; &#x1f49b;博客首页&#xff1a;C站个人主页&#x1f31e; &#x1f497;作者目的&#xff1a;如有错误请指正&#xff0c;将…

【Python微信机器人】第一篇:在windows11上编译python

前言 我打算写一个系列&#xff0c;内容是将python注入到其他进程实现inline hook和主动调用。本篇文章是这个系列的第一篇&#xff0c;后面用到的案例是注入python到PC微信实现基本的收发消息。文章着重于python方面的内容&#xff0c;所以对于微信找收发消息的call不会去讲过…

挚文集团:股票回购速度、收入指引均不及预期,令投资者失望

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 挚文集团未来将不再公布MAU数据 今年6月初&#xff0c;挚文集团(MOMO)在公布2023年第一季度业绩时透露&#xff0c;“陌陌应用的月活跃用户(MAU)”已经从去年3月的1.109亿下降到了今年3月的1.065亿&#xff0c;同比下降了-…

大数据Hadoop之——部署hadoop+hive+Mysql环境(window11)

一、安装JDK8 【温馨提示】对应后面安装的hadoop和hive版本&#xff0c;这里使用jdk8&#xff0c;这里不要用其他jdk了&#xff0c;可能会出现一些其他问题。 1&#xff09;JDK下载地址 http://www.oracle.com/technetwork/java/javase/downloads/index.html 按正常下载是需要…

【Python语义分割】Segment Anything(SAM)模型交互式分割+掩膜保存(三)

我之前分享了Segment Anything&#xff08;SAM&#xff09;模型的基本操作&#xff0c;这篇给大家分享下交互式语义分割代码&#xff0c;可以通过鼠标点击目标物生成对应的掩膜&#xff0c;同时我还加入了掩膜保存的代码。 1 Segment Anything介绍 1.1 概况 Meta AI 公司的 S…

HarmonyOS 音视频开发概述

在音视频开发指导中&#xff0c;将介绍各种涉及音频、视频播放或录制功能场景的开发方式&#xff0c;指导开发者如何使用系统提供的音视频 API 实现对应功能。比如使用 TonePlayer 实现简单的提示音&#xff0c;当设备接收到新消息时&#xff0c;会发出短促的“滴滴”声&#x…

【API篇】三、转换算子API(上)

文章目录 0、demo数据1、基本转换算子&#xff1a;映射map2、基本转换算子&#xff1a;过滤filter3、基本转换算子&#xff1a;扁平映射flatMap4、聚合算子&#xff1a;按键分区keyBy5、聚合算子&#xff1a;简单聚合sum/min/max/minBy/maxBy6、聚合算子&#xff1a;归约聚合re…

第三章 内存管理 七、具有快表的地址变换结构

目录 一、什么是快表 二、快表有什么用&#xff1f; 例子&#xff1a; 三、快表和慢表同时查询 四、局部性原理 五、总结 一、什么是快表 快表&#xff0c;又称联想寄存器&#xff08;TLB&#xff0c;translation lookaside buffer)&#xff0c;是一种访问速度比内存快很…

教程更新 | 持续开源 RK3568驱动指南-驱动基础进阶篇

《iTOP-RK3568开发板驱动开发指南》手册文档更新&#xff0c;手册内容对应视频教程&#xff0c;后续资料会不断更新&#xff0c;不断完善&#xff0c;帮助用户快速入门&#xff0c;大大提升研发速度。 ✦ 第一篇 驱动基础 第1章 前言 第2章 你好&#xff01;内核源码 第3章 …

如何部署WampServer并结合cpolar内网穿透工具实现公网访问本地服务?

文章目录 前言1.WampServer下载安装2.WampServer启动3.安装cpolar内网穿透3.1 注册账号3.2 下载cpolar客户端3.3 登录cpolar web ui管理界面3.4 创建公网地址 4.固定公网地址访问 前言 Wamp 是一个 Windows系统下的 Apache PHP Mysql 集成安装环境&#xff0c;是一组常用来…

苏东坡在元丰五年

北宋神宗元丰二年&#xff08;1079年&#xff09;十二月二十八日&#xff0c;震惊朝野上下的“乌台诗案” 正式结案&#xff1a;“祠部员外郎、直史馆苏轼责授检校水部员外郎、黄州团练副使&#xff0c;本州安置、不得签书公事&#xff0c;令御史台差人转押前去。” 元丰三年&…