算法心得
2014.1.15 深搜和广搜的区别
搜集自网络:
深搜和广搜的不同之处是在于搜索顺序的不同。
深搜的实现类似于栈,每次选择栈顶元素去扩展,广搜则是利用了队列,先被扩展的的节点优先拿去扩展。
搜索树的形态:深搜层数很多,广搜则是很宽。
深搜适合找出所有方案,广搜则用来找出最佳方案。
如果一道题你想不到怎么做,就可以考虑搜索。
经典入门级dfs深搜题:http://acm.hdu.edu.cn/showproblem.php?pid=1241
经典入门级bfs广搜题:http://acm.hdu.edu.cn/showproblem.php?pid=2612
解题报告:hdu 2612:Find a way
2014.1.21 贪心和动态规划的区别
该链接中描述的很全面:贪心算法和动态规划
2014.1.29 注意排序效率
做一些涉及到排序的题的时候注意排序的效率,效率低的可能会超时,建议直接用库函数。
2014.3.13 关于时间复杂度
时间复杂度是用来估计程序运行时间的,一般是进行一次运算,或者一次循环赋值,就算做是一个复杂度,就是O(1),但是就算是相同的时间复杂度例如O(1),运行时间也可能有差异。
一般计算机每秒可以处理10^8~10^9的复杂度,接近10^8,其实由于循环时很多时候我们并不是一次运算,所以一般程序要控制在10^7~10^8的复杂度能保证不超时,但递归调用耗时会比较大,这一点注意。
以上改编自百度知道的回答。
可参考以下样例的程序,有6重循环,每次10次,一共运算10^6次,时间复杂度为O(1),这个程序虽然看起来有6重循环很大,但是不会超时。
2014.3.29 小技巧:如何产生精确的圆周率PI?
const double PI = acos(-1.0);
利用反余弦函数或者反正弦函数可以精确的求出圆周率的值。
例题:hdu 1140:War on Weather(计算几何,水题)
2014.4.9 计算几何:弧度和弧长的区别
弧长 / 半径 = 弧度(即角度)
弧长是长度,单位是cm,m等长度单位。
弧度是角的度量单位,是单位,缩写为rad。1rad = 180°/π,π rad = 180°。
Freecode : www.cnblogs.com/yym2013