首页 > 编程语言 >ST算法

ST算法

时间:2024-11-27 21:46:27浏览次数:5  
标签:元素 ST 算法 最值 区间 dp

ST算法:基于倍增原理的算法。

  对数列的每一个元素,我们将它分成单独的区间,将其作为第一组,再对每两个元素分成单独的区间,作为第二组,再对四个元素分成单独区间,依次类推。我们可以看到,如果多个小区间完全覆盖一个大区间(可以重叠但不超过),则大区间的最值一定和这些小区间的最值相等。
  该算法和树形数据结构相当,子节点将自己的最值依次向上传给父节点,在对区间查询时,不需要和线段树一样一层层搜寻,由于每一个区间我们都是算过的,所以查询的时间复杂的仅为 O(1)。
  在计算每组区间的最值时,我们采用动态规划(后续的组的值可以由前面的组得来且无后续性),定义dp[ s ][ k ], s为区间的左端点,k为区间内元素个数,k的值每次倍增,也就是k<<1,所以如果我们想要上一组的最值,那么应该以当前组的左端点开始,往右k-1格,再将左端点加上2^(k-1)得到另一个左端点,因为是倍增,所以加上1<<(k-1),得到状态转移方程:
    dp[ s ][ k ] = min { dp[ s ][ k -1 ],dp[ s+1<<( k-1 ) ][ k-1 ]

标签:元素,ST,算法,最值,区间,dp
From: https://www.cnblogs.com/wxc-cc/p/18573164

相关文章

  • CS61B srping 2018 disc02 sol https://sp18.datastructur.es/
    第19行的变量level是静态方法change方法内部的本地变量,他对main方法里的level或者是实例变量level没什么影响。publicclassPokemon{//一个名为Pokemon的类publicStringname;//实例变量namepublicintlevel;//实例变量levelpublicPokemon(String......
  • Docker 实战:搭建本地 Registry 私有镜像仓库及批量导入脚本
    前言:在我之前的博客中,我分享了Harbor仓库搭建的详细操作步骤。然而,在实际的生产环境中,并非每个Docker环境都需要部署一个规模庞大的Harbor仓库。有时,一个轻量级的本地Registry私有镜像仓库会更为便捷。本文将介绍如何搭建一个本地Registry私有镜像仓库,并提供一个自动化......
  • CS61B srping 2018 disc02 https://sp18.datastructur.es/
    passbywhat?a.下列程序每一行怎么运行?b.画出box-and-pointer指示图c.在第19行,level被赋值为50,level是什么?是Pokemon的实例变量?(instancevariable)还是change方法的本地变量?(localvariable?)还是main方法里的变量?还是其他什么东西?1publicclassPokemon{2public......
  • 代码随想录算法训练营day59| 47.参加科学大会 94.城市间货物运输
    学习资料:https://www.programmercarl.com/kamacoder/0047.参会dijkstra堆.html#思路dijkstra堆优化节点少:用邻接矩阵边少:用邻接表Bellman_ford算法边的权值有负数;对所有边进行松弛n-1次的操作松弛(A---value--->B)ifminDist[B]>minDist[A]+value:minDist[B]=minDist[A......
  • 代码随想录算法训练营第十四天(统一迭代;LeetCode226.翻转二叉树;LeetCode101.对称二叉树
    统一迭代LeetCode144.二叉树的前序遍历题目链接:二叉树的前序遍历题目链接代码/***Definitionforabinarytreenode.*publicclassTreeNode{*intval;*TreeNodeleft;*TreeNoderight;*TreeNode(){}*TreeNode(intval)......
  • FUSE File Systems
    A5:FUSEFileSystemsDueDec3by11:59p.m.Points9AvailableafterNov12at12a.m.IntroductionYouwillbeimplementingaversionoftheVerySimpleFileSystem(https://pages.cs.wisc.edu/~remzi/OSTEP/file-implementation.pdf)(VSFS)fromtheOSTEPte......
  • Flink Standalone 集群模式安装部署教程
    目录一、前言二、环境准备三、安装步骤1.下载并安装Flink4.配置Flink5.配置环境变量6.启动Flink集群7.访问FlinkWeb界面四、简单测试五、常见问题和解决办法1.启动失败,无法连接到TaskManager2.Web界面无法访问六、总结一、前言Flink是一个开......
  • 脚手架设计2-startServer
    startServer1.要做的事在imooc-buildstart命令中.要做的事情子进程启动webpack-dev-serve服务.以下是子进程启动原因方便重启,解决配置修改后,无法重启的问题避免主进程受影响,万一子进程启动失败,报错了,不能影响主进程.可以让主进程再启动一个启动子进......
  • 极端天气下的目标检测与单目测距算法(毕业设计附代码)
    代码获取:代码本文主要工作:科技的发展与进步促使自动驾驶车辆逐渐成为全球汽车产业发展的重要战略方向。但自动驾驶车辆面对如:大雨、大雾、大雪等极端环境时,智能汽车图像采集与处理系统将面临巨大挑战。并且自动驾驶需要实时关注周围物体的威胁,实时进行目标检测以及精确......
  • [AirTest] airtest-selenium做Web自动化测试(上手实操三)&& airtest 代码改写成用 Djang
            经过了实操二的 测试用例复用(循环) 的实现,现对其进行改造提升优化。        实操一让我们知道了如何做单个测试用例的 自动化测试,实操二让我们知道了如何做多个测试用例的 自动化测试,那么,如何把实操二写的脚本变成更方便的测试脚本,让多个测试用例......