首页 > 其他分享 >动态规划

动态规划

时间:2023-11-05 11:46:54浏览次数:25  
标签:队列 优化 元素 最小值 dp 动态 规划 单调

前面的鸽。

优化类dp
单调队列优化 dp

通常用于解决形如

\[dp[i] = dp[j] + a (j\in\{i-R,i-L\}) \]

的 dp 方程优化,计算可以达到 \(\Theta(n).\) 复杂度并不算很高。

以下介绍默认队列中单调不升

先说一下单调队列的思想:

维护一个内容完全满足单调性的队列,其中的元素满足限制(即位置可以保证在 \([i-R,i-L]\))。

实时更新队列中位置不满足要求的部分,直接弹出即可。

当加入元素时,将队列中大于加入元素的元素全部弹出,因为新加入的元素一定是最新、位置最合适的,可以感性地理解为年纪最小的。

于是把能力比这个元素大的全部弹出,因为这个元素的年纪特性是最合适的,所以在一系列弹出之后一定会加入队列。这个时候这个元素前面的元素一定是比这个元素小的,所以这个队列始终单调。

单调队列通常解决限定长度的最小值,查询全序列所有长度为 \(k\) 的最小值是 \(O(1)\) 的,甚至在线。

属于一种基础的数据结构, \(J\) 组难点。

这个东西可以用各种各样的方式优化 \(dp\) ,总之算是实用的小科技,如果考试的时候想不到 / 打不出来可以用更加暴力的线段树代替,反正只会加一只 \(\log\)。

下面是关键部分代码(单调队列板子)

for(register int i=1;i<=n;++i){
		printf("%d\n",a[Q[l]]);
		a[i]=re;
		while(l<=r&&i-Q[l]>=m)    ++l;
		while(l<=r&&a[Q[r]]>a[i]) --r;
		Q[++r]=i;
	}

其中注意单调队列 \(Q\) 中存储的是下标。

例题

介绍一个单调队列优化 dp 模板,虽然它甚至连分块都没卡掉。

\(\color{black}{P2034}\)

首先设计状态,\(dp[i]\) 表示前 \(i\) 个数可以在满足要求的条件下删去数的最小值,转移方程显然是 \(dp[i] = dp[j] + a[i] (j\in\{i-R,i-L\})\),然后答案就是 \(tot\) 减去 \(\min\{dp[i]\} (i\in\{n-k,n\})\) 其中 \(tot\) 表示所有数的总和。总复杂度 \(O(n)\)\(\color{black}{Link}\)

稍微调试以下边界,然后就可以 AC 了。

标签:队列,优化,元素,最小值,dp,动态,规划,单调
From: https://www.cnblogs.com/qxblog/p/dp.html

相关文章

  • Android动态代理详解
    动态代理在java里面算是一种比常用的技术,它和静态代理的区别在于静态代理需在编译的时候代理类就已经确定了,而动态代理的代理类是在运行的时候动态生成的。例如使用retrofit的时候我们只需要定义好interface:publicinterfaceGitHubService{@GET("users/{user}/repos")Ca......
  • expo-av如何实现动态播放本地音频?
    要实现动态播放本地音频,可以结合使用expo-file-system和expo-av库。下面是一个实现的示例:首先,确保你的项目已经安装了expo-file-system和expo-av。如果没有安装,你可以使用以下命令进行安装:expoinstallexpo-file-systemexpo-av在你的代码中,导入所需的库:import*asFileSystemfr......
  • 如何实施符合功能安全及ASPICE要求的模型动态测试 ——TPT Workshop邀请函
    尊敬的女士/先生:2023年3月,北汇信息与诸多工程师相约上海,成功举办了今年第一场TPTWorkshop活动,与大家进行了深入的技术交流。如今,2023年已渐渐步入尾声,我们将在北汇信息上海总部再次举办题为“如何实施符合功能安全及ASPICE要求的模型动态测试”的TPTWorkshop活动,诚邀各位新老......
  • IBM业务流程与IT信息中心战略规划报告 P80
    本人从事咨询工作多年,二十年一线数字化规划咨询经验,提供制造业数智化转型规划服务,顶层规划/企业架构/数据治理/数据安全解决方案资料干货.该PPT共90页,由于篇幅有限,以下为部分资料,如需完整原版 方案,点击右上角红色按钮关注+私信。本文来源于网络,侵权立删流程与信息化部门在现代企......
  • 我们该如何规划自己的职业生涯?
    最近好几个星球同学找我咨询关于职业发展的问题,有在当前岗位工作不顺想跳槽的,也有迷茫找不到方向的,大家各有各的困惑。和他们聊完,我回顾了自己将近十年的职场生涯,许是运气所钟,虽然自己也有过迷茫阶段,但从结果来看好像都在关键时刻做了正确的选择。如文章标题所述,我们该如何规划......
  • 预编译语句Prepared Statements,俗称动态sql
    --创建临时表用动态sql创建set@sqls=concat('createtemporarytable',`temptableTableName`,'(variablevarchar(200),variableValuevarchar(200),variableDatevarchar(50))');preparestmt1from@sqls;#准备好sql语句executestmt1;......
  • 个人规划目标2023版
    2023年规划   软考证书  读书+12(平均每月一本)  攒钱总额到XX   锻炼身体消灭痘痘   准备面试                      2024规划无线电A类证书http://www.360doc.com/......
  • java笔记_15_动态生成Excel文件
    //创建表头数据//内层List按纵向创建,外层List按横向添加,横向重复的名称会自动合并表格。List<List<String>>list=newArrayList<>();List<String>childList1=newArrayList<>();childList1.add("aaa");childList1.add("bbb");childList1.add......
  • Yii 动态模型实现思路
    假设这么一个场景:有一个通过YiiActiveForm构建的表单,里面所有的字段都是虚拟的,比如说这个表单的字段来自于一个JSON或者说数据库的结果集,需要实现同一个模型,根据不同的传参,构建不同的表单项。问题:Yii的表单是通过模型来创建的,也就是说我有这个表单项,模型中必须有对应的......
  • php扩展库--动态 .so 扩展配置
    在PHP源码安装包中有许多对应扩展的模块源码,可以编译增加扩展时使用cdphp-5.6.37cdext/ldap/phpize(yuminstallphp-devel)./configuremake&makeinstall若报错configure:error:Cannotfindldaplibrariesin/usr/lib执行cp-frp/usr/lib64/libldap*/usr/lib/再......