1

做题技巧

浮点数eps

判断两个浮点数误差的时候,使用fabs(a-b) < eps,一般的eps为1e-9。如果有可能,尽量避免浮点运算,做整数的转换。

计算一元二次方程解的时候,可以进行如此运算,例如((sqrt(8.0*n+1)-1)/2-eps)+1

熟用log函数

多多利用log函数,用以减小数量级。

c#include <math.h>

double   log(double x);   /* 计算一个数字的自然对数 */
double log10(double x);   /* 计算以10为基数的对数 */

求一个数的位数: log10(a)

利用矩阵

矩阵的乘积

有向面积

通过有向面积判断点是否在图形内部

通过行列式的三个点求有向面积

例如:

     | x0 y0 1 |
2A = | x1 y1 1 | = x0y1 + x2y0 + x1y2 - x2y1 - x0y2 - x1y0
     | x2 y2 1 |

两倍的三角形面积
方法是构建齐次坐标,如果逆时针,有向面积为正,逆时针,有向面积为负。

关于时间复杂度

  1. n <= 8 , n!的算法可以
  2. n <= 20 , 2**n的算法可以
  3. n <= 300, 至多用n**3的算法

归并思想

左边求,右边求,左右边求。。


svtter
209 声望37 粉丝

更喜欢原型开发


引用和评论

0 条评论