核心内容摘要
从好莱坞到你的App:拆解HunyuanVideo-Foley API在微服务架构中的集成实战与避坑指南
lc1483ST表的本质就是二进制拆分只要满足传递性可加性即可和线段树树状数组二分查找的底层数学模型是一致的不得不说这种记录2^j父节点的想法太巧妙了第一次见觉得惊艳。
blow my mind 的感觉极具美感的算法让人如受洗礼一样佩服第一次想出这种算法的大佬。
类似的思想在很多算法里都有体现.
树的高度如果是N怎么办比如退化成链表
代码没变化复杂度分析没变化。
文字确实有个小错误树的最大的高度是 n 级别的所以人一个节点到距离为 1, 2, 4, 8, 16, 32 ... 的祖先最多存储到 logn 这么多祖先的距离所以状态总数是 nlogn 的。
我一直以为叫ST表
st 也用到了 binary lifting 的思想但 st 不是 binary liftingst 是指创建一个表快速求查询一个数组的最大值最小值和或者其他统计数据。
可以参考这里https://cp-algorithms.com/data_structures/sparse-table.htmlclass TreeAncestor {private:vectorvectorint dp;public:TreeAncestor(int n, vectorint 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 ! -