初中代数几何在算法中的应用 (Math Toolbox)
教学目标:
- 会用数列求和公式(等差 / 等比 / 平方和)做计数与复杂度估算。
- 掌握一元二次方程求根与韦达定理,会用判别式判根。
- 记住常用恒等式(平方差、完全平方、立方和差)用于化简。
- 会用两点距离、三角形面积、叉积处理坐标几何,叉积能判方向 / 算面积 / 判点在线段哪侧。
前置:初中代数与平面几何、06.数组(一维与二维)、整数与浮点。
一、数列求和:计数与复杂度的常客
| 数列 | 求和公式 | 在算法里干嘛 |
|---|---|---|
| 等差 | 双重循环 的次数、选两个的对数 | |
| 一般等差 | 区间和 | |
| 等比 | 满二叉树节点数 、倍增 | |
| 平方和 | 嵌套循环次数、某些计数 |
典型用途:估复杂度。形如
for i: for j<i的循环跑了 次——这就是”两重循环是 “的来历。
也用于避免暴力:要算 ,直接套 是 ,不必循环。注意 大时乘积要用long long( 时 已爆int)。
二、一元二次方程与韦达定理
方程 :
- 判别式 : 两不等实根, 一个, 无实根。
- 求根公式 。
- 韦达定理(根与系数):,。
在算法里:解”和为 、积为 的两个数”直接套韦达(它们是 的根);二分 / 数学题里判”是否存在整数解”先看 是否为完全平方数。浮点开根
sqrt有误差,要整数解时记得四舍五入后回代验证。
三、常用恒等式(化简利器)
用途:把式子化简成好算的形式。例如判断 是否为某数,分解成 后枚举因子,比枚举 快得多;平方差也常用于”两数之差 × 两数之和”的计数题。
四、平面几何与坐标几何
4.1 距离、中点、面积
- 两点 、 的距离:。
比较距离大小时比较距离的平方即可,避免开根的浮点误差、还能用整数。
- 中点:。
- 勾股定理:直角三角形 ;判直角、算斜边。
- 三角形面积:;已知三边用海伦公式 ,。
4.2 叉积:计算几何的地基
向量 、 的叉积(一个数):
它一招三用,全是整数运算、无浮点误差:
| 看叉积符号 | 含义 |
|---|---|
| 在 逆时针方向(左转) | |
| 在 顺时针方向(右转) | |
| 两向量共线(平行) |
long long cross(long long ax, long long ay, long long bx, long long by) {
return ax * by - ay * bx; // 叉积,注意 long long 防溢出
}
// 判点 C 在有向线段 A->B 的哪一侧:看 cross(B-A, C-A) 的符号
long long side(long long ax,long long ay,long long bx,long long by,long long cx,long long cy){
return cross(bx-ax, by-ay, cx-ax, cy-ay); // >0 左侧, <0 右侧, =0 共线
}用途:三角形 面积 ;判三点是否共线(叉积为 0);判转向(凸包、判点在多边形内都靠它)。这是后续计算几何的第一块砖。
小结
- 求和公式:等差 、平方和 ——用于计数与复杂度估算,大数用
long long。 - 一元二次:判别式 、求根公式、韦达 ;要整数解先判 是否完全平方。
- 恒等式:平方差 等用于化简 / 因子枚举。
- 坐标几何:比距离用距离平方;叉积 一招判方向 / 算面积 / 判共线,全程整数无误差。
练习
- 用公式 求 ,与循环结果对拍。
- 给三个点的坐标,用叉积判它们是否共线、并求三角形面积(面积可能是半整数,输出 的整数)。
- 已知两数之和与之积,用韦达 / 求根判是否为两个整数。
这些是 GESP / CSP 初赛数学题的高频考点,也是后续二分答案、计数、计算几何的底座。