内积(点积)

很普及组,不讲了。

\[(a,b)^2\le(a,a)(b,b)\]

外积(叉积)

也很普及组,不讲了。

旋转

对于矩阵 \(\begin{bmatrix}\cos\theta\\\sin\theta\end{bmatrix}\),在左边乘一个 \(\begin{bmatrix}cos\omega&\sin\omega\\sin\omega&-\cos\omega\end{bmatrix}\),就能变成 \(\begin{bmatrix}\end{bmatrix}\)

(第一类正交矩阵???)

反转

(第二类正交矩阵???)

(怎么没听说过?)

某经典题

补前面的公式漏掉了/kk

Simpson 积分

很普及组,不讲了。

一些基础东西

点和直线距离:点积随便搞。

向量位置关系:叉积判掉不平行,点积判掉反向,最后长度判掉即可。

线段是否相交:等价于任意一条线段与另一条线段所在的直线均有交点。特判一下平行和共线的情况(判是平行还是共线,可以连接一对端点,叉积判断;对于共线,简单判断两条线段是否相离即可)。

线段交点:先点积一波,然后应该就能随便搞了。

线段之间距离:如果有交点就是 0,否则答案一定在端点处取到。

多边形面积:固定一个点,逆时针对于每条边,求这个点和这条边组成的有向三角形面积,求和。

判断多边形是否凸:叉积判断。

判断一个点是否在多边形(不一定凸)内:过点作水平向右的射线,判断与多少条边相交,偶数条就在多边形外,否则在多边形内。注意先判掉是否在多边形上。

求凸包:不讲了。

求凸包直径:旋转卡壳。

求凸多边形和射线交的面积:求出与哪些边有交,直接搞即可。

平面最近点对:分治。按 \(x\) 排序,分别求左边和右边的最近点对距离。对于每个左边的点,根据一些推理可得它只会和右边的至多 6 个点对答案可能有贡献。而且是 \(y\) 离它前 6 近的两个点。复杂度 \(O(n\log n)\)。

求圆和直线的交点:先求直线到圆心的距离,然后就随便搞了。

求两个圆的交点:求两个圆心距离,然后就随便搞了。

求点到圆的切点:求点到圆心距离,然后就随便搞了。

求两个圆的公切线:反正都是随便搞了。

求圆和多边形交的面积:先把多边形拆成很多有向三角形。如果整个三角形在圆内,返回三角形面积;如果整个三角形在圆外,返回 0;如果三角形只有一个点在圆内,返回一个类似扇形的面积。否则选择任意一条过不在圆内的顶点的边,将这条边与圆的交点拎出来,按照这些交点把三角形划分成若干个小三角形,递归求解。实际上只会递归常数层。

最小圆覆盖:随机增量即可。

[HAOI2008]下落的圆盘

\(n\) 个圆盘从天而降,后面的会盖住前面的,问最后可见的轮廓线总长。

\(n\le 1000\)

对于每个圆盘,暴力判断后面所有圆盘覆盖了这个圆盘的哪些角度区间。

CF932F

见 Blogewoosh #7

SB 题,不讲了。

XV Open Cup named ... Directions

给若干个向量,每个向量有个代价,可以选若干个,要求能用非负系数组合他们,组合出任意向量,问最小代价和。

\(n\le 2\times 10^5\)

(在讲题之前自己先瞎 YY 一波,感觉挺对)

把向量移到同一个起点。对于两个向量,用非负系数组合他们,能组合出的向量的终点应该在那块小于 180 度的半平面交处。

那么问题就变成选出一些向量,使得起点处被分出的每个角,都小于 180。然后就不会了。

咕了。

CF1025F

给定 \(n\) 个点,问有多少对三角形不相交。

\(n\le 2000\)。

两个三角形不相交等价于它们有两条内公切线。

求出内公切线条数,除以 2 即可。

枚举内公切线,维护两边点数。扫描线可以做到 \(O(n^2\log n)\)。

圆反演

先固定一个反演中心 \(O\) 和一个反演半径 \(r\)。

对于一个点 \(P\),反演后会变成 \(P'\),其中 \(P,O,P'\) 三点共线,且 \(P,P'\) 在 \(O\) 同侧,且 \(OP\cdot OP'=r^2\)。

一些性质:

\(P\) 反演再反演后还是 \(P\)。

过反演中心的圆,会反演成不过反演中心的直线。

不过反演中心的圆,会反演成另一个不过反演中心的圆,它们的位似中心就是反演中心,位似比是……反正是 \(r\) 还是 \(r^2\)。

过反演中心的直线,反演后是它自己。

以反演中心为圆心,反演半径为半径作圆,那么圆上的点反演后还在圆上,圆内的点反演后在圆外,圆外的点反演后在圆内。

BZOJ2961

\(n\) 次操作,每次要么加入一个过原点的圆,要么询问一个点是否在所有圆的内部。

\(n\le 5\times 10^5\)

圆反演,过原点的圆反演成一条不过原点的直线。

问题变为询问一个点,将这个点以原点为反演中心圆反演后,是否在所有直线外侧(外是不包含原点的一半)。

动态半平面交。

HDU 4773

给定平面上不相交的两个圆和圆外的一点,求过这个点且与这两个圆外切的圆。可能有多个。

可以暴算。这里说圆反演的做法。

把圆外一点看作原点,那么要求的圆会变成一条直线,给定的两个圆会变成另外两个圆。

就是求新的两个圆的公切线,再反演回去就好了。

Codechef QPOINT

给定 \(n\) 个不相交的多边形,强制在线,\(q\) 组询问,给出一个点,问它在那个多边形内(或者不在任何一个多边形内)

\(n,q\le 10^5\),点数和 \(\le 3\times 10^5\)

过这个点向上做一条射线。

如果没有与任何一条边相交,那就不在任何一个多边形内。

如果第一条有交的边是从右往左的,那么就是这条边所在的多边形。

如果第一条有交的边是从左往右的,那就不在任何一个多边形内。

需要维护边的上下关系。

如果可以离线,那么就按 \(x\) 排序,扫描线 + set 就没了。

否则就要用可持久化 treap。

CF704E

一棵树,\(m\) 个事件:在 \(t_i\) 时刻 \(x_i\) 上会出现一个人,以每秒 \(c_i\) 条边的速度移动到 \(y_i\)。移动是连续的,且移到终点后瞬间消失。

问最早什么时刻,两个人出现在同一点上。

\(n,m\le 10^5\)。

树剖。

考虑 \(x\) 轴是时间,\(y\) 轴是 DFS 序。一次移动就是一条线段。

变成有 \(O(m\log n)\) 条线段,问 \(x\) 坐标最小的交点。

按 \(x\) 扫描线。用 set 维护所有线段的 \(y\) 的相对大小关系。

如果两条线段有交,它们一定在某个时刻在 set 中相邻。如果没有线段有交,大小关系一定不变。

每次加入一条线段,判断和前驱后继有没有交。每次删除一条线段,判断前驱和后继有没有交。

复杂度 \(O(m\log^2 n)\)。

CF799G

给一个凸多边形,\(q\) 组询问,给出 \((x_i,y_i)\),如何切经过 \((x_i,y_i)\) 的一刀,平分这个多边形。输出极角,或者输出无解。

\(n\le 10^4,q\le 10^5\)。

设 \(f(x)\) 表示极角为 \(x\) 的射线左侧的面积减掉右侧的面积。

所以 \(f(0)=-f(\pi)\)。所以肯定有零点。可以二分零点。

问题变成如何计算 \(f(x)\)。

考虑对叉积计算前缀和,实际上是对凸多边形求了个三角剖分。

二分出卡在哪两条边上,那么跟射线有关的有向三角形只有 2 个。这两个直接算,剩下的预处理前缀和/后缀和。

复杂度两个 \(\log\)。

ZROI 暑期高端峰会 A班 Day5 计算几何的更多相关文章

  1. ZROI 暑期高端峰会 A班 Day5 杂题选讲

    CF469E \(n\) 个需要表示的数,请使用最少的 \(2^k\) 或 \(-2^k\) 表示出所有需要表示的数.输出方案. \(n\le 10^5,|a_i|\le 10^5\). 首先每个数肯 ...

  2. ZROI 暑期高端峰会 A班 Day2 线性代数

    高斯消元 很普及组,不讲了 当主元没有逆的时候可以辗转相除. 如果也没有带余数除法--没救了 逆矩阵 我们定义矩阵 \(A\) 的逆矩阵为 \(A^{-1}\),满足 \(AA^{-1}=A^{-1} ...

  3. ZROI 暑期高端峰会 A班 Day3 图论

    最短路 NOI2019 D2T1 弹跳 KD 树 线段树套set -> 线段树套并查集? POI2014/2015 ??? \(n\) 个点 \(m\) 条边 DAG.求删掉每个点后 \(1\) ...

  4. ZROI 暑期高端峰会 A班 Day4 生成函数

    一般生成函数 很普及组,不讲了 生成函数是一种形式幂级数,也就是我们只关心系数,不关心未知数具体的值. 比如 \(\sum\limits_{i\ge 0}x^i=\frac{1}{1-x}\).虽然只 ...

  5. ZROI 暑期高端峰会 A班 Day4 树上数据结构

    FBI Warning:本文含有大量人类的本质之一. 你经历过绝望吗? [ZJOI2007]捉迷藏 询问树上最远黑点对. 动态边分治可以比点分治少一个 \(\log\). bzoj3730 咕了. [ ...

  6. ZROI 暑期高端峰会 A班 Day1 组合计数

    AGC036F Square Constriants 一定有 \(l_i<p_i\le r_i\). 考虑朴素容斥,枚举每个数是 \(\le l_i\) 还是 \(\le r_i\).对于 \( ...

  7. ZROI 暑期高端峰会 A班 Day1 序列数据结构

    FBI Warning:本文包含大量人类的本质之一 CF643G 维护一个序列,可以区间赋值,求区间中出现超过 \(p\%\) 的数. 允许输出不对的数,允许重复输出,但是所有对的数都一定要输出.而且 ...

  8. ZROI 暑期高端峰会 A班 Day3 字符串

    FBI Warning:本文含有大量人类的本质之一 后缀树 反正后缀树就是反串的后缀自动机的 Parent 树,就不管了. 然而 SAM 也忘了 好的假装自己会吧--dls 后缀自动机 大概记得,不管 ...

  9. ZROI 暑期高端峰会 A班 Day6 离线问题

    FBI Warning:本文含有大量人类本质之一. 动态联通问题 允许离线. 模板,不讲了. 归并排序 %@)(#&%)++%($@)%!#(&%)(&@))) 主定理 U^( ...

随机推荐

  1. ant-design-pro引用css

    ant-design-pro中默认只能引用less文件,引用了css文件也是无效的.所以需要在配置文件config.js中找到  cssLoaderOptions,在 getLocalIdent中加入 ...

  2. Ubuntu19 安装 pylearn2

    环境: /etc/issue # Ubuntu 19.10 \n \l python -V # Python 其中,python环境是我自己建立的虚拟 venv 方便测试( 相当于你的python 实 ...

  3. Java中接口和Sala中的特质的区别?

    1.先要区分是Java中哪个版本的接口,因为Java中不同版本接口是不一样2.Java8之前的接口(不包含Java8),这个版本的接口只能属性和抽象方法,和Scala中的特质有完全的不用因为Scala ...

  4. 安装mysql驱动程序

    1.  MYSQL驱动:https://dev.mysql.com/downloads/connector/odbc/ 64 位版本:https://cdn.mysql.com//Downloads/ ...

  5. sql 按指定规则排序,例如 按 1,3,2排序 而不是1,2,3

    我们都知道 sql语句中的排序有desc(降序).asc(升序),这两个都是按顺序排列的,最近有一个需求是不按顺序排序了 ,抽出个别的排在前面,并且这种需求是应对的问题中的数据是比较少的,而且没有规律 ...

  6. 【USACO】香甜的黄油

    这是一道来自USACO的题,一般歪果仁的题都不是很好做,就比如这题 题目描述: 农夫John发现做出全威斯康辛州最甜的黄油的方法:糖.把糖放在一片牧场上,他知道N(1<=N<=500)只奶 ...

  7. 前端小插件之手写js循环滚动特效

    很多前端都离不开滚动的特效,调用插件繁琐,后期更改麻烦,考虑到这些因素,自己写了一套无限循环滚动的小特效. 首先滚动特效很好写,用css就可以完成,下面写一个基础css向上循环滚动特效 html &l ...

  8. Solr核心特性【启动机制,配置管理,请求管理】

    一.启动机制 Solr作为一个Java Web应用默认运行在Jetty上,使用全局Java属性[solr.solr.home]来定位配置文件的根目录.在启动时,Solr会扫描主目录下包含core.pr ...

  9. Fundebug录屏插件更新至0.4.0,修复BUG,优化性能

    摘要: 录屏功能更加强大,欢迎免费试用! 关于Fundebug录屏功能 Fundebug是专业的程序BUG监控服务,当线上应用出现BUG的时候,我们可以第一时间报警,帮助开发者及时发现BUG,提高De ...

  10. ASP.NET----内置对象----Response

    Response对象是HttpResponse类的实例,它代表Web服务器对客户端请求的响应,包含如下功能: ①重定向:  ②设置页面输出内容 (可以向客户端浏览器发送信息,或者将访问转移到另一个网址 ...