做题技巧
浮点数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 |
两倍的三角形面积
方法是构建齐次坐标,如果逆时针,有向面积为正,逆时针,有向面积为负。
关于时间复杂度
- n <= 8 , n!的算法可以
- n <= 20 , 2**n的算法可以
- n <= 300, 至多用n**3的算法
归并思想
左边求,右边求,左右边求。。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。