计算几何 I. 极角】的更多相关文章

多边形 Time Limit: 1000 MS     Memory Limit: 65536 K Total Submit: 113(42 users)   Total Accepted: 51(38 users) Rating: Special Judge: No Description 一个封闭的多边形定义是被有限个线段包围.线段的相交点称作多边形的顶点,当你从多边形的一个顶点沿着线段行走时,最终你会回 到出发点. 凸多边形(convex)想必大家已经很熟悉了,下图给出了凸多边形和非凸多边…
参考资料 hankcs.com: POJ 1981 Circle and Points 题解 aswmtjdsj: POJ 1981 Circle and Points [定长圆覆盖最多点问题] zxy_snow: 极角排序 概念 In mathematics, the polar coordinate system is a two-dimensional coordinate system in which each point on a plane is determined by a d…
计算几何,极角排序,双指针,二分. 直接找锐角三角形的个数不好找,可以通过反面来求解. 首先,$n$个点最多能组成三角形个数有$C_n^3$个,但是这之中还包括了直角三角形,钝角三角形,平角三角形,我们需要减去这些三角形的个数. 如果在$n$个点中找到了$A$个直角,那么必然有$A$个直角三角形. 同理,如果找到了$B$个钝角,那么必然有$B$个钝角三角形. 同理,如果找到了$C$个平角,那么必然有$C$个平角三角形. 那么答案:$ans=C_n^3-A-B-C$. 接下里的任务就是求解$A$,…
题链: http://poj.org/problem?id=2007 题解: 计算几何,极角排序 按样例来说,应该就是要把凸包上的i点按 第三像限-第四像限-第一像限-第二像限 的顺序输出. 按 叉积 来排序的确可以A掉,但是显然有错呀. 比如这个例子: 0 0 -2 2 -1 -1 1 0 正确答案显然应该是: (0,0) (-2,2) (-1,-1) (1,0) 但是 用叉积 排序后却是这样: (0,0) (1,0) (-2,2) (-1,-1) (要用叉积排序的话,按道理来讲应该把像限分成…
开场连wa三发A题,差点心态崩了,还好坚持打完了,一共A了三题 A题,判断能不能放第一个圆,能放的话,先手比赢 #include<map> #include<set> #include<cmath> #include<queue> #include<stack> #include<vector> #include<cstdio> #include<cassert> #include<iomanip>…
Space Ant Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 2876   Accepted: 1839 Description The most exciting space discovery occurred at the end of the 20th century. In 1999, scientists traced down an ant-like creature in the planet Y19…
平面上给你n(不超过2000)个点,问你能构成多少个面积在[A,B]之间的Rt三角形. 枚举每个点作为直角顶点,对其他点极角排序,同方向的按长度排序,然后依次枚举每个向量,与其对应的另一条直角边是单调的,可以用一个pointer做出来,然后可以得出那些同方向的向量的区间(这个代码好像有点问题,可能会退化,最好确定了一个LL之后,对一个方向的不要重复算RR.这里如果也改成二分就比较好,复杂度不会退化).然后通过二分可以得到A使得面积在[A,B]间的有哪些(其实这个因为也是单调的,好像也没必要二分,…
平面上n个红点,m个黑点,问你多少个黑点至少在一个红三角形内. 对红点求凸包后,转化为询问有多少个黑点在凸包内. 点在凸多边形内部判定,选定一个凸包上的点作原点,对凸包三角剖分,将其他的点极角排序之后,使用二分法就可以判定点在哪个剖分出来的三角形的夹角内,然后用叉积即可判定其在凸包内还是外,O(logn): http://www.cnblogs.com/dream-wind/archive/2012/05/23/2514694.html #include<cstdio> #include<…
[POI2018]Pionek Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 269  Solved: 80[Submit][Status][Discuss] Description 在无限大的二维平面的原点(0,0)放置着一个棋子.你有n条可用的移动指令,每条指令可以用一个二维整数向量表 示.每条指令最多只能执行一次,但你可以随意更改它们的执行顺序.棋子可以重复经过同一个点,两条指令的方 向向量也可能相同.你的目标是让棋子最终离原点的欧几里得距…
把点按纵坐标排序,依次枚举,把它作为原点,然后把之后的点极角排序,把叉积的公式稍微化简一下,处理个后缀和统计答案. #include<cstdio> #include<cmath> #include<algorithm> #include<cstring> using namespace std; #define N 3002 typedef double db; typedef long long ll; struct Point{ll x,y;db ji…