{"id":28056352,"url":"https://github.com/evgeth/segment_tree","last_synced_at":"2025-05-12T06:10:35.762Z","repository":{"id":57465301,"uuid":"113992033","full_name":"evgeth/segment_tree","owner":"evgeth","description":"A better implementation of a segment tree","archived":false,"fork":false,"pushed_at":"2019-01-09T18:19:33.000Z","size":24,"stargazers_count":34,"open_issues_count":3,"forks_count":9,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-04-16T08:18:47.517Z","etag":null,"topics":["multidimensional","rmq","segment","segmenttree"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/evgeth.png","metadata":{"files":{"readme":"README","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-12-12T13:11:54.000Z","updated_at":"2025-01-07T11:31:34.000Z","dependencies_parsed_at":"2022-09-13T13:50:28.928Z","dependency_job_id":null,"html_url":"https://github.com/evgeth/segment_tree","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/evgeth%2Fsegment_tree","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/evgeth%2Fsegment_tree/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/evgeth%2Fsegment_tree/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/evgeth%2Fsegment_tree/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/evgeth","download_url":"https://codeload.github.com/evgeth/segment_tree/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253685226,"owners_count":21947308,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["multidimensional","rmq","segment","segmenttree"],"created_at":"2025-05-12T06:10:35.058Z","updated_at":"2025-05-12T06:10:35.756Z","avatar_url":"https://github.com/evgeth.png","language":"Python","readme":"Segment Tree with range operations\n==================================\n\n.. figure:: https://img.shields.io/badge/license-MIT-blue.svg\n   :alt: LicenseLink\n\nThis is a general implementation of a segment tree for Python 3.\n\n-  Semigroup range operations in O(logN) time\n-  Built-in support for ``max``, ``min``, ``sum`` operations\n-  Extensible to support more semigroup operations\n-  Limited support for multidimensional trees\n-  Python 2 is not currently supported\n\nInstallation\n============\n\n``pip3 install segment-tree``\n\nSegment Tree (one-dimensional)\n==============================\n\nBasic usage\n-----------\n\n.. code:: python\n\n\n        from segment_tree import *\n        array = [3, 1, 5, 3, 13, 7, 2, 7, 2]\n        tree = SegmentTree(array)\n\n        t.query(1, 3, \"sum\") # 9\n        t.update(0, 10) # [10, 1, 5, 3, 13, 7, 2, 7, 2]\n        t.query(0, 8, \"min\") # 0\n        t.update(2, -1) # [10, 1, -1, 3, 13, 7, 2, 0, 2]\n        t.query(0, 2, \"min\") # -1\n\nUpdates on ranges\n-----------------\n\n.. code:: python\n\n        from segment_tree import *\n        array = [1, 2, 3, 4, 5]\n        t = SegmentTree(array)\n        t.update_range(0, 2, 6) # 6 6 6 4 5\n        t.update_range(1, 4, 2) # 6 2 2 2 2\n        t.query(0, 3, \"min\") # 2\n\nMultidimensional Segment Tree (alpha version, might have bugs)\n==============================================================\n\nBasic usage\n-----------\n\n.. code:: python\n\n        from segment_tree import *\n        a = [[[1, 2], [1, 3]], [[-1, -2], [-1, -3]]]\n        tree = MultidimensionalSegmentTree(a)\n\n        tree.query([(0, 1), (0, 0), (0, 0)], max) # 1\n        tree.query([(1, 1), (0, 1), (0, 1)], sum) # -7\n        tree.query([(0, 1), (1, 1), (0, 1)], min) # -3\n\nTests\n=====\n\nExecute ``python3 setup.py test`` to run tests.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fevgeth%2Fsegment_tree","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fevgeth%2Fsegment_tree","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fevgeth%2Fsegment_tree/lists"}