带范围更新的多维段树。

segment-tree的Python项目详细描述


具有范围操作的段树

LicenseLink

这是python 3段树的一般实现。

  • o(logn)时间内的半群距离运算
  • 内置支持maxminsum操作
  • 可扩展以支持更多的半群操作
  • 对多维树的支持有限
  • 当前不支持python 2

安装

pip3 install segment-tree

段树(一维)

基本用法

fromsegment_treeimport*array=[3,1,5,3,13,7,2,7,2]tree=SegmentTree(array)t.query(1,3,"sum")# 9t.update(0,10)# [10, 1, 5, 3, 13, 7, 2, 7, 2]t.query(0,8,"min")# 0t.update(2,-1)# [10, 1, -1, 3, 13, 7, 2, 0, 2]t.query(0,2,"min")# -1

范围更新

fromsegment_treeimport*array=[1,2,3,4,5]t=SegmentTree(array)t.update_range(0,2,6)# 6 6 6 4 5t.update_range(1,4,2)# 6 2 2 2 2t.query(0,3,"min")# 2

多维段树(alpha版本,可能有错误)

基本用法

fromsegment_treeimport*a=[[[1,2],[1,3]],[[-1,-2],[-1,-3]]]tree=MultidimensionalSegmentTree(a)tree.query([(0,1),(0,0),(0,0)],max)# 1tree.query([(1,1),(0,1),(0,1)],sum)# -7tree.query([(0,1),(1,1),(0,1)],min)# -3

测试

执行python3 setup.py test以运行测试。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
带有嵌套JAR的java RCP ClassNotFoundException   java在输入框中设置默认值,crud应用程序使用spring   java如何在Heroku中使用fs创建新文件   java将JPanel放在JFrame中   java这个正则表达式会匹配“i.imgur.com/xxx”吗?   java在片段内创建RecylerView,而无需在Android中设置片段   Android上Groovy导致java错误的双精度浮点精度损失   swing Java查找JFrame属于JPanel的内容   java Spring junit自连线自定义类本身必须有构造函数吗?   java textswitcher支持前面的文本   从Android客户端到JAXRS的java Post自定义对象   java如何检索JSON数据并使用MPAndroidChart绘制折线图,以及在安卓上的改进   拒绝用户“root”@“localhost”的java c3p0访问(使用密码“是”)   使用Selenium Webdriver自动化ExtJS应用程序时java面临的问题