计算复杂度
复杂度在算法竞赛中对算法的选择有很大的帮助,利用复杂度可以简化思考,并帮助得到正确的算法。
一般来讲,将基础的运算操作都当成常数复杂度即 \(O(1)\),所以实际上在考虑的问题就是这种基础运算操作在数据规模极大的情况下的运算次数。
常见的复杂度有对数多项式,也就是常说的 \(polylog\),多项式也就是 \(poly\) 以及指数复杂度。
\(\Theta\) 和 \(O\) 符号
对于两个复杂度 \(f,g\),若 \(f=O(g)\) 则说明 \(f\) 在数据规模极大时不劣于 \(g\),比如说我们选择排序的复杂度可以是 \(O(n^2)\)。而 \(f=\Theta(g),g=\Theta(f)\) 即代表二者相距较近,只有常数的差别。
\(\widetilde O\) 符号
读作 soft \(O\),\(\widetilde O(g)=O(g\cdot polylog(g))\)。
从数据范围到复杂度
在具体应用中,根据不同的数据范围,可以猜测不同的算法复杂度。
uoj #751. 【UNR #6】神隐
有一棵未知的树,你需要对交互库进行若干次询问,来恢复这棵树的形态。每次询问时,你需要给出一个长度为 \(
标签:联通,询问,基础,叶子,算法,Theta,复杂度 From: https://www.cnblogs.com/zcr-blog/p/18257512