算法混合杂项

基础类型 

可用template

投影

是有方向的

 求俩直线交点

推公式

q我们不知道,已知p1 p2,正弦定理,α可以用叉积表示出来 β同理 所以我们能求出p1q

已知piq 回归到我们上一个问题,已知方向和长度,我们就能够求出Voq

可以解决很多问题。但很多题目涉及除法,要用浮点数。

判断顺时针还是逆时针

to_left测试能够判断是输入的点是左边还是右边,当输入三个点时,第三个点再向量x的左侧为逆时针,反之则为顺时针,判断两点之间的距离会用到eps,可能会有精度误差,所以应该合理缩放

余弦定理

c^2 = a^2 + b^2 - 2abcosθ

符号函数

1.fabs(x) < eps  == 0

2.x < 0 == -1

3.x > 0 == 1

向量

一般用点向式表示,可以表示射线。

判断点是否在直线上,如果点在直线上叉积== 0

如果俩直线平行或者重合,则没有交点,如果是直线与线段的交点,则可以判断线段的端点是否再在直线的两侧。

叉乘一定要逆时针叉乘!!!

点到直线的距离等于 面积除以底边长度, 和点到线段的距离不一样

分两种情况

当cosθ<0时就判断两边的距离

判断点是否在线段上

1.叉积 == 0

2.点积保证点p在线段上,在同一侧的话,点积>0

判断是否相交

是否相互横跨,则就可以,

如果等于就是在线段上

三角形

面积

1.叉乘

2.海伦公式  p = (a + b + c)  / 2 ; s = sqrt((p - a) * (p - b) * (p - c))

四心

1.外接圆圆心 三边中垂线交点,到三角形三个顶点距离相等

2.内切圆圆心:三条角平分线的交点

3.垂心:三个垂线的交点

4.重心: 每个点与对边的连线,到三角形三边平方和最小,距离之积最大

普通多边形

1.不可相交的多边形

2.凸多边形,过任意一条边,其他点在这条边的同一侧

最小表示法

1.集合最小表示法

2.字符串最小表示法

例:ababc循环移位,构造出新串,找到字典序最小的串,原串的最小表示法

O(n)

1.破环成链, n => 2 n

找到这些串中最小的串,双指针暴力比较。i+ k和j + k是第一个不同的字母

当特殊情况时,就是循环串已经循环了所有点

构造

有很多方案,答案可以根据某种规则构造出来,贪心 -> 构造 数学技巧,分支很多,没有统一方法,自求多福,找规律,猜结论,自己定义一个规则

1.幻方

2.时态同步,到达叶节点时间相同,权值相同,想出最优解构造出来,看有什么性质、到达当前节点时间相同,求每个子树的最长路径

打表

1.如果范围小,我们就可以打表,写到代码里提交,先去暴力,找规律,在输出。

2.代码并不是标准做法,可以处理 99%, 但是有问题,处理不了的地方,打表特判。

趁早做打表题,暴搜。最优化问题,模拟退火

补分打表、

3.配合打表,预处理可能tle,或者代码长,预处理固定的,手算方便,难优化

1)矩阵乘+快速幂

2)状态压缩

3)数位dp

4)字符串

数据结构

1.并查集

路径压缩和按秩合并

拓展

1. 记录每个集合大小,将几何大小绑定到根节点。

2.每个点到根节点的距离。绑定到每个元素身上。多类,带权和拓展域并查集,空间复杂度 是k和o(k),带权是相对的思想,拓展域是枚举的思想。

389链表

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值