问题引入
如果现在给你一棵树,要求求出任意两点之间的的最近公共祖先(LCA),你该怎么做呢?
- 树上最近公共祖先:树上两点的所有公共祖先中离两点最近的点
朴素算法求 LCA
这个想法很简单,就是把从根节点到两个节点的路径分别求出来,然后找出路径中离根节点最远的两边同时存在的点即可,时间复杂度最坏 O(N), 阅读更多
如果现在给你一棵树,要求求出任意两点之间的的最近公共祖先(LCA),你该怎么做呢?
这个想法很简单,就是把从根节点到两个节点的路径分别求出来,然后找出路径中离根节点最远的两边同时存在的点即可,时间复杂度最坏 O(N), 阅读更多
OIER 生涯中大部分时间都是在调题目,但有时候很多题目确实会把我们调崩溃,怎么调也调不出来,这里有一些小建议,可以看一看。
倍增法,顾名思义就是翻倍。它能够使线性的处理转化为对数级的处理,大大地优化时间复杂度。
这个方法在很多算法中均有应用,其中最常用的是 RMQ (Ranged Max/Min Query) 问题和求
LCA(Lowest Common Ancestor)。
在你面前的桌子上,摆着无数个重量为任意整数的胡萝卜;
接着告诉你一个数字 n,问你要怎么挑选,使得你选出的胡萝卜能够表示出 [1,n]...
今天我们来讲一讲一个暴力优化的算法。
本文介绍分数规划问题及其解法。
在使用 Node.js 等前端构建工具的时候, watch 总是避免不了的东西,它的作用是热加载,让我们的代码实时更新。
只不过,我们总会遇到类似这样的报错:
1 | Error: EMFILE: too many open files, watch 'path...' |
我们又该怎么办呢?
嗨,大家好!
这里是 鸽子窝,一个属于我自己的小天地。
在这里,你可以看到我的一些小记录、学习笔记、生活随想,或者偶尔的一些小创作。
这是一个测试文件,用于验证 Lute 渲染器是否正常工作。
Lute 的特色功能是中英文自动空格。例如:这是一个测试 test,应该变成:这是一个测试 test。
GitHub 是一个很好的平台,Node.js 是 JavaScript 运行时。
Lute 可以将英文标点替换为中文标点(仅在中文之间)。
这是一个句子,它应该使用中文标...