CDN加速镜像 | 设为首页 | 加入收藏夹
当前位置: 首页 资源下载 源码下载 其它 MacOS编程

文件名称:ST稀疏表

  • 所属分类:
  • 标签属性:
  • 上传时间:
    2019-05-09
  • 文件大小:
    13.54kb
  • 已下载:
    0次
  • 提 供 者:
  • 相关连接:
  • 下载说明:
    别用迅雷下载,失败请重下,重下不扣分!

介绍说明--下载内容来自于网络,使用问题请自行百度

ST 稀疏表的实现
ST(Sparse Table,稀疏表)算法是求解 RMQ 问题的经典在线算法,以 O (nlogn) 时间预处理,然后在 O (1) 时间内回答每个查询。ST 算法本质上是动态规划算法,定义了一个二维辅助数组 st [n][n],st [i][j] 表示原数组 a 中从下标 i 开始,长度为 2^j 的子数组中的最值(以最小值为例)。
预处理:要求解 st [i][j] 时,即求下标 i 开始,长度为 2^j 的子数组的最小值时,可以把这段子数组再划分成两半,每半的长度为 2^(j-1),于是前一半的最小值为 st [i][j-1],后一半的最小值为 st [i+2^(j-1)][j-1],于是动态规划的转移方程为:st [i][j] = min (st [i][j-1], st [i+2^(j-1)][j-1]) 长度为 2^j 的情况只和长度为 2^(j-1) 的情况有关,只需要初始化长度为 2^0=1 的情况即可。而长度为 1 时的最小值是显然的(为其本身)。
查询: 现在问题是,st 数组可以怎样加速我们的查询呢?这也是算法的巧妙之处,假设求下标在 u 到 v 之间的最小值。先求 u 和 v 之间的长度 len=v-u+1,然后求 k=ln (len),则 u 到 v 之间的子数组可以分为两部分: 以 u 开始,长度为 2^k 的一段 以 v 结束,长度为 2^k 的一段(可以计算得到起始位置为 v-2^k+1)注意,一般情况下这两段是重叠的,但是这两段的最小值中较小的一个仍然是 u 到 v 的最小值。于是 RMQ (u,v) = min (st [u][k], st [v-2^k+1][k])
(系统自动生成,下载前可以参看下载内容)

下载文件列表

压缩包 : ST稀疏表.playground.zip 列表
ST稀疏表.playground/
ST稀疏表.playground/playground.xcworkspace/
ST稀疏表.playground/Contents.swift
ST稀疏表.playground/timeline.xctimeline
ST稀疏表.playground/contents.xcplayground
ST稀疏表.playground/playground.xcworkspace/contents.xcworkspacedata
ST稀疏表.playground/playground.xcworkspace/xcuserdata/
ST稀疏表.playground/playground.xcworkspace/xcshareddata/
ST稀疏表.playground/playground.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
ST稀疏表.playground/playground.xcworkspace/xcuserdata/tushujian.xcuserdatad/
ST稀疏表.playground/playground.xcworkspace/xcuserdata/tushujian.xcuserdatad/UserInterfaceState.xcuserstate

相关说明

  • 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
  • 搜珍网是交换下载平台,只提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。更多...
  • 本站已设置防盗链,请勿用迅雷、QQ旋风等下载软件下载资源,下载后用WinRAR最新版进行解压.
  • 如果您发现内容无法下载,请稍后再次尝试;或换浏览器;或者到消费记录里找到下载记录反馈给我们.
  • 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
  • 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.

相关评论

暂无评论内容.

发表评论

*快速评论: 推荐 一般 有密码 和说明不符 不是源码或资料 文件不全 不能解压 纯粹是垃圾
*内  容:
*验 证 码:
搜珍网 www.dssz.com