计算几何初步

两点之间距离

欧氏距离

即欧几里得距离。

平面内两点的距离为

\[\sqrt{(x_1-x_2)^2+(y_1-y_2)^2} \]

立体空间内两点的距离为

\[\sqrt{(x_1-x_2)^2+(y_1-y_2)^2+(z_1-z_2)^2} \]

\(\dots\)

\(n\) 维空间内两点的距离为

\[\sqrt{\sum_{i=1}^{n}{(x_1-x_2)^2}} \]

曼哈顿距离

二维空间内,两点之间距离为

\[d(A,B)=|x_1-x_2|+|y_1-y_2| \]

\(n\) 维空间内两点的距离为

\[\sum_{i=1}^{n}{|x_1-x_2|} \]

性质 \(-\) 三角形不等式:从点 \(i\)\(i\) 的直接距离不会大于途经的任何其它点 \(k\) 的距离。

\[d(i,j)\le d(i,k)+d(k,j) \]

切比雪夫距离

二维空间内,两点之间距离为

\[d(A,B)=\min{(|x_1-x_2|,|y_1-y_2|)} \]

曼哈顿距离与切比雪夫距离的相互转化

\(A(x_1,y_1),B(x_2,y_2)\)

  • 曼哈顿坐标系是通过切比雪夫坐标系旋转 \(45^\circ\) 后,再缩小到原来的一半得到的

  • 把每个点 \((x,y)\) 转化为 \((x+y,x-y)\)新坐标系下的切比雪夫距离 就是 原坐标系下的曼哈顿距离

  • 把每个点 \((x,y)\) 转化为 \((\dfrac{x+y}{2},\dfrac{x-y}{2})\)新坐标系下的曼哈顿距离 就是 原坐标系下的切比雪夫距离

例题

P5098 [USACO04OPEN]Cave Cows 3

对于式子 \(|x_1-x_2|+|y_1-y_2|\) ,可以假设 \(x_1-x_2\ge 0\) ,根据 \(y_1-y_2\) 正负分类讨论:

  • \(y_1-y_2\ge 0\)
\[|x_1-x_2|+|y_1-y_2|=(x_1-x_2)+(y_1-y_2)=(x-1+y_1)-(x_2+y_2) \]
  • \(y_1-y_2< 0\)
\[|x_1-x_2|+|y_1-y_2|=(x_1-x_2)+(y_2-y_1)=(x-1-y_1)-(x_2-y_2) \]

分别求出 \(x+y\)\(x-y\) 的最大、最小值之差即可。

P4648 [IOI2007] pairs 动物对数 (曼哈顿距离转切比雪夫距离)

P3964 [TJOI2013]松鼠聚会 (切比雪夫距离转曼哈顿距离)

向量叉积

对于点对 \((A,B,C)\) ,设:

\(x_1=A_x-B_x,y_1-A_y-B_y,x_2=C_x-B_x,y_2=C_y-B_y\)

若:

\[(x_1\times y_2-x_2\times y_2)>0 \]

则:

若:

\[(x_1\times y_2-x_2\times y_2)<0 \]

则:

因此我们就可以利用叉积来维护凸包以及多边形面积。

点的旋转

让点 \((x_1,y_1)\) 绕点 \((x_2,y_2)\) 旋转 \(t^o\) :

\(x=(x_1-x_2)\times \cos{t}-(y_1-y_2)\times \sin{t}+x_2\)

\(y=(x_1-x_2)\times \sin{t}+(y_1-y_2)\times \cos{t}+y_2\)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/318306.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

树链剖分概念及模板 + 例题 [POJ3237 tree + 软件包管理器]

文章目录概念模板例题1&#xff1a;软件包管理器题目题解代码实现例题2&#xff1a;POJ3237 tree题目题解代码实现概念 树链剖分主要是用于解决以下这两个问题。 1、更改树上点x到点y的最短路径上的所有结点的值 2、查询树上点x到点y的最短路径上的所有结点的和。 在讲树链剖分…

P3706-[SDOI2017]硬币游戏【高斯消元,字符串hash】

正题 题目链接:https://www.luogu.com.cn/problem/P3706 题目大意 给出 nnn 个长度为 mmm 的 H/TH/TH/T 串。 开始一个空序列&#xff0c;每次随机在后面加一个 H/TH/TH/T &#xff0c;求每个串第一次出现的概率。 1≤n,m≤3001\leq n,m\leq 3001≤n,m≤300 解题思路 数据范…

YBTOJ:字符串匹配(KMP)

文章目录题目描述解析代码题目描述 解析 看了题解。。。 这题的关键在于可以变换匹配的一个充要条件&#xff1a; 每个字符与前一个相同字符的距离相同 这个搞出来之后就可以以它为关键字进行KMP了 注意&#xff01; 当与前一个字符的距离超过匹配长度时&#xff0c;是没有意义…

Strange Birthday Party CodeForces - 1471C

Strange Birthday Party CodeForces - 1471C 题意&#xff1a; 我有n个朋友&#xff0c;商店有m种商品&#xff0c;这m种商品按序号价格从小到大排列&#xff0c;对于每一个朋友我给出一个序号k&#xff0c;我可以直接给朋友序号k的商品价格的金钱或给朋友买一个序号小于k的商…

TransactionScope事务处理方法介绍及.NET Core中的注意事项

作者&#xff1a;依乐祝原文链接&#xff1a;https://www.cnblogs.com/yilezhu/p/10170712.html今天在写CzarCms的UnitOfWork的使用使用到了这个TransactionScope事务&#xff0c;因此对它进行了相关资料的查阅并记录如下&#xff0c;希望对大伙在.NET Core中使用有所帮助。写在…

P4548-[CTSC2006]歌唱王国【概率生成函数,KMP】

正题 题目链接:https://www.luogu.com.cn/problem/P4548 题目大意 ttt次询问&#xff0c;给出一个长度为mmm的串SSS和一个空串TTT&#xff0c;每次在TTT后面随机加入1∼n1\sim n1∼n的字符&#xff0c;直到TTT中出现SSS为止&#xff0c;求期望次数。 1≤n≤105,t≤50,1≤m≤10…

YBTOJ:字符匹配(KMP)

文章目录题目描述解析代码题目描述 解析 显然应该要尝试套kmp的板子 关键是如何套 也就是那个判断匹配的条件是什么的问题 本题的关键是当kmp匹配时&#xff0c;匹配位之前的所有位大小关系的顺序都是匹配的&#xff0c;所以我们只需要看当前位即可 考虑对b预处理出3个数组&a…

历史上的今天(history)+ 勇者斗恶龙(dragon)

朋友们我来了&#xff0c;好久都没有更新了&#xff0c;手实在痒痒&#xff0c;不撸两道&#xff0c;内心过意不去 文章目录A&#xff1a;历史上的今天&#xff08;history&#xff09;题目题解代码实现B&#xff1a; 勇者斗恶龙&#xff08;dragon&#xff09;题目描述题解代…

Codeforces Round #694 Div. 2

Codeforces Round #694 Div. 2 CodeForces 1471A Strange Partition CodeForces 1471B Strange List CodeForces 1471C Strange Birthday Party 签到题 稍有难度 CodeForces 1471D Strange Definition CodeForces 1471E Strange Shuffle CodeForces 1471F Strange Housing

领域驱动设计,让程序员心中有码(四)

#领域驱动设计&#xff0c;让程序员心中有码&#xff08;四&#xff09;----------------------追忆有关分层的古老往事我一直认为&#xff0c;程序员也是艺术家&#xff0c;他们撰写的每一行代码&#xff0c;是献给这大好世界的优美诗篇。不同的人&#xff0c;写的代码也许风格…

YBTOJ洛谷P4551:最长异或路径(trie树)

洛谷传送门 文章目录题目描述解析代码题目描述 解析 本题关键就在于一点&#xff1a; 若把每个点的深度dep[i]定义为从根到节点边权的异或和 那么i到j的路径异或和可以表示为&#xff1a; dep[i] ^ dep[j] 首先要是i、j在不同子树上显然成立 如果他们在同一子树上&#xff0c;…

P5074-Eat the Trees【插头dp】

正题 题目链接:https://www.luogu.com.cn/problem/P5074 题目大意 给出一个nmn\times mnm的网格&#xff0c;有的必须铺线有的不能&#xff0c;铺成若干条闭合回路&#xff0c;求方案数。 1≤n,m≤121\leq n,m\leq 121≤n,m≤12 解题思路 考虑插头dpdpdp&#xff0c;因为可以…

初赛—算法复杂度

对于 \(T(n) a\times T(\frac{n}{b})c\times n^k\) 这样的递归关系&#xff0c;有这样的结论&#xff1a; \(a>b^k\) 则有 &#xff1a; \(T(n) O(c\times n^{\log_{b} a})\)\(ab^k\) 则有 &#xff1a; \(T(n) O(c\times n^k\times log n)\)\(a<b^k\) 则有 &#xff…

1414. 牛异或

题意&#xff1a; 区间长度为n的数组a&#xff0c;取连续一段子序列&#xff0c;问哪段子序列的异或和最大&#xff0c;如果存在多个这样的序列&#xff0c;那么选择序列末端整数对应的编号更小的那个序列。 如果仍然存在多个可选的序列&#xff0c;那么选择长度最短的那个序列…

基于Asp.Net Core打造轻量级内部服务治理RPC(一)

继之前的《Asp.Net Core Docker 搭建》文章末尾说过的&#xff0c;将陆续编写基于asp.net core 打造一个内部服务治理的rpc框架。不过前端时间较忙&#xff0c;所以搁置了一段时间。闲话不多说&#xff0c;下面就来讲讲为什么需要去做一个该框架&#xff0c;以及想法的来源和设…

P7046-「MCOI-03」诗韵【SAM,倍增,树状数组】

正题 题目链接:https://www.luogu.com.cn/problem/P7046 题目大意 给出一个长度为 nnn 的字符串&#xff0c;然后 mmm 次把它的一个子串加入集合。如果一个字符串在这个集合中作为字符串的后缀出现次数大于 kkk 那么这个字符串就会被计入贡献。 每次求计入贡献的字符串数和最…

YBTOJ:前缀询问(trie树)

文章目录题目描述解析代码题目描述 解析 &#xff08;没有做出来&#xff0c;这个ans的处理方式其实也不难想…qwq&#xff09; 考虑把T都作为模板串加入trie树 加入每个模板串自然就是按照i顺序的 所以我们在插入t的时候沿途标记一下 新出现的未标记的i的间隔就是当前的i与上…

DP专练1( [NOIP 2003]加分二叉树 + 太空梯 )

我们先慢慢来加分二叉树题目题解简单讲解前序//中序//后序遍历代码实现太空梯题目题解代码实现加分二叉树 题目 题解 简单讲解前序//中序//后序遍历 其实说白了&#xff0c;这个*序就是根root的遍历顺序 先序就是root–>left–>right 中序就是left–>root–>rig…

P1896 [SCOI2005]互不侵犯

P1896 [SCOI2005]互不侵犯 题目&#xff1a; 在NN的棋盘里面放K个国王&#xff0c;使他们互不攻击&#xff0c;共有多少种摆放方案。国王能攻击到它上下左右&#xff0c;以及左上左下右上右下八个方向上附近的各一个格子&#xff0c;共8个格子。 题解&#xff1a; 需要知道…

AT2368-[AGC013B]Hamiltonish Path【构造】

正题 题目链接:https://www.luogu.com.cn/problem/AT2368 题目大意 给出 nnn 个点 mmm 条边的一张无向图&#xff0c;然后求一条路径满足 路径长度不小于二。路径无交。对于所有的 xxx 与路径的端点相连&#xff0c;那么 xxx 在路径上。 1≤n,m≤1051\leq n,m\leq 10^51≤n,…