news 2026/5/23 19:09:18

树上倍增|st表

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
树上倍增|st表

lc1483

ST表的本质就是二进制拆分,只要满足传递性,可加性即可,和线段树,树状数组,二分查找的底层数学模型是一致的

不得不说,这种记录2^j父节点的想法太巧妙了,第一次见,觉得惊艳。 blow my mind 的感觉,极具美感的算法让人如受洗礼一样,佩服第一次想出这种算法的大佬。

5. 类似的思想在很多算法里都有体现.

6. 树的高度如果是N怎么办,比如退化成链表

7. 代码没变化,复杂度分析没变化。文字确实有个小错误:树的最大的高度是 n 级别的,所以人一个节点到距离为 1, 2, 4, 8, 16, 32 ... 的祖先,最多存储到 logn 这么多祖先的距离,所以状态总数是 nlogn 的。

8. 我一直以为叫ST表

9. st 也用到了 binary lifting 的思想,但 st 不是 binary lifting,st 是指创建一个表快速求查询一个数组的最大值,最小值,和或者其他统计数据。可以参考这里:https://cp-algorithms.com/data_structures/sparse-table.html

class TreeAncestor {

private:

vector<vector<int>> dp;

public:

TreeAncestor(int n, vector<int>& parent) : dp(n) {

for(int i = 0; i < n; i ++)

dp[i].push_back(parent[i]);

for(int j = 1; ; j ++){

bool allneg = true;

for(int i = 0; i < n; i ++){

int t = dp[i][j - 1] != -1 ? dp[dp[i][j - 1]][j - 1] : -1;

dp[i].push_back(t);

if(t != -1) allneg = false;

}

if(allneg) break; // 所有的节点的 2^j 的祖先都是 -1 了,就不用再计算了

}

}

int getKthAncestor(int node, int k) {

if(k == 0 || node== -1) return node;

int pos = ffs(k) - 1; // C++ 语言中 ffs(k) 求解出 k 的最右侧第一个 1 的位置(1-based)

return pos < dp[node].size() ? getKthAncestor(dp[node][pos], k - (1 << pos)) : -1;

}

};

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/20 8:01:12

用 ESP32-C3 直接连 Starlink 路由器/热点并完成配网

我们这边没有做过“用 ESP32-C3 直接连 Starlink 路由器/热点并完成配网”的专项实物测试&#xff0c;所以不能给你一个“我们已验证没问题/一定可以”的结论。但从协议和已知限制来看&#xff1a;ESP32-C3 作为 2.4GHz Wi-Fi STA 连接 Starlink 的热点本身通常是可行的&#x…

作者头像 李华
网站建设 2026/5/22 6:49:10

Shell脚本命令大全:快速入门与实用案例详解

Shell脚本是自动化系统管理任务的核心工具&#xff0c;掌握常用命令能极大提升工作效率。本文不罗列所有命令&#xff0c;而是聚焦于实际工作中最有用、最易出错的命令组合与应用场景&#xff0c;帮助读者建立实用的脚本编写思维。 shell脚本命令如何快速入门 入门shell脚本不…

作者头像 李华
网站建设 2026/5/14 11:06:03

Ftrack的使用,与ShotGrid,CGTeamwork的对比

最近有个机会使用Ftrack, 不得不吐槽一下&#xff0c;二个字难用&#xff0c;三个字不好用 Ftrack不像cgteamwork, 或者Autodesk Flow Production Tracking&#xff08;ShotGrid&#xff09;那样&#xff0c;有明确的资产&#xff0c;镜头&#xff0c;任务等管理&#xff0c; F…

作者头像 李华
网站建设 2026/5/22 1:45:21

AI写论文锦囊!4个AI论文写作工具,助力期刊论文高质量诞生!

在撰写期刊论文、毕业论文或是职称论文的过程中&#xff0c;许多学术研究者常常面临一些困难。对于需要编写AI写论文的学者来说&#xff0c;面对海量的文献资料&#xff0c;寻找所需的信息有时就像在海中捞针一样艰难。种种严格的格式要求常常让人感到困扰&#xff0c;处理这些…

作者头像 李华
网站建设 2026/5/8 22:04:38

AI写论文有妙招!4款实用AI论文写作工具,快速提升写作效率!

你是否正在为撰写期刊论文而感到焦虑&#xff1f;面对海量的文献、繁琐的格式要求和无尽的修改过程&#xff0c;低效的写作已成为很多学术研究者共同的困扰&#xff01;别担心&#xff0c;下面为你推荐四款经过实测的AI论文写作工具&#xff0c;它们能帮助你从文献检索、论文大…

作者头像 李华