
几何
mis_deer
Make_myself.
展开
-
[HDU 4855] Goddess (极角排序+三分)
HDU - 4855 借这道题学了下极角排序和三分求凸函数最大值 按所有左右切线,圆心的弧度值排序,从而分割出角度上的若干个区间 射线的角度在这些区间里变动时,每个割线的长度都是凸函数,叠加起来也是凸函数 所以可以对每个区间利用三分法求得最大值,再对这些最大值取 max 即为答案1) 利用三分法可以求得单峰函数的最大值 2) 利用 atan2(y,x)可以比较方便地求出向量与 x轴正方向的原创 2016-04-07 21:11:21 · 699 阅读 · 0 评论 -
[LightOJ 1292] Laser Shot (几何,判断共线)
LightOJ - 1292 刚开始写的时候是O(n3log(n)n^3log(n))的,枚举两个点,得到一条直线,用set记录下来,然后再 O(nn)地计数,居然没有卡过 orz 听了学长的教导,get到一个几何常用思路,正确解法如下 枚举一个点,再枚举其他点,计算到这个点的斜率,make_pair(dx,dy)塞到map里,把相同斜率的计数一下 这样时间复杂度为 O(n2log(n)n^原创 2016-04-07 21:19:43 · 409 阅读 · 0 评论 -
[HDU 5017] Ellipsoid (模拟退火)
HDU - 5017 给定一个椭圆面方程,求面上距离原点最近的距离 这份代码是模拟退火的做法 模拟退火总的来说就是一个限定时间的暴力搜索 但是随着时间的增加,其向前的步伐会越来越小 设定一个温度 temp以及一个衰减速率 rate来模拟 以这题为例,假设 (0,0,f(0,0))(0,0,f(0,0))处的解最优 首先原点一定是在椭圆面内部的,将原点代入方程即可得到 向八个方原创 2016-05-01 18:04:13 · 310 阅读 · 0 评论 -
[HDU 5408] CRB and Farm (几何+凸包)
HDU - 5408 给定一个NN个点的凸包,凸包内有 KK个点 求问是否能从凸包上选择不超过 2∗K2*K个点 使得他们连成的凸包能完全包住这 KK个点 如果能,则逆时针输出构造凸包的顶点编号 对内部的 KK个点求一次凸包,此内凸包顶点不超过 KK 问题就转化为求一个凸包包裹内部的凸包 将 KK个点组成的内凸包的每个顶点投射到外凸包上 投影点连成的凸包必定包裹内凸包原创 2016-07-18 20:09:17 · 364 阅读 · 0 评论 -
[HDU 5784] How Many Triangles (几何+极角排序)
HDU - 5784 几何题,给定平面上若干个不重复的点, 求这些点能组成多少个锐角三角形 我刚开始的时候想的是枚举钝角和直角 然后计算每三个点能组成的三角形的个数 减去共线的,再减去钝角和直角的个数,即为答案 而且我在极角排序之后,我试图用二分来确定上下界 这样也不是不能做,但是比较麻烦题解的方法就比较好 统计锐角的个数,设为 AA,钝角和直角的个数,设为 BB 每个锐角三角原创 2016-08-03 10:49:43 · 1631 阅读 · 4 评论 -
[Codeforces 166B] Polygons (点在凸多边形内)
Codeforces - 166B 判断任意多边形 B是否严格在凸多边形 A内部 点在凸多边形内部试板题 如果 B的所有顶点在 A内,则 B在 A内 由于 A的顶点有 10510^5个,B的顶点有 10410^4 个 所以不能用 (n)\mathcal{O}(n)的暴力判断 有一个 (logn)\mathcal{O}(logn) 的二分做法 基本原理是用对角线将凸多边形剖成以 co原创 2016-09-08 23:52:33 · 480 阅读 · 0 评论 -
[HDU 3060] Area2 (简单多边形面积交)
HDU - 3060 给定两个简单多边形,求他们覆盖的面积 先求出两个简单多边形的面积交 然后用面积和减去面积交 简单多边形面积交的求法就是将多边形分割成若干三角形 然后两组三角形用凸多边形的方法两两求交#pragma comment(linker, "/STACK:102400000,102400000") #include <cstdio> #include <iostream> #i原创 2016-09-09 22:22:19 · 1233 阅读 · 0 评论 -
[HDU 5572] An Easy Physics Problem (点在线上判定+对称)
HDU - 5572 给定一个圆和圆外两个点 A和 B 现在有一个质点在 A处,有速度方向 V 其与圆的碰撞是弹性碰撞,问质点是否能经过 B 分情况讨论 如果射线不与圆相交,直接判定点是否在射线上 如果射线与圆相交,那么列方程解出与原交点 并得出反弹的法线方程,然后以法线方程作对称 最后判断点是否在一条线段和一条射线上 作对称的话可以将点 A以法线作对称,然后再用撞击点和对称点得原创 2016-09-18 09:30:49 · 517 阅读 · 0 评论 -
[HDU 5130] Signal Interference (圆与简单多边形面积交)
HDU - 5130 求圆与简单多边形的面积交 从圆心将多边形剖分成若干个三角形 然后求每个三角形与圆的面积交 为了方便其间,先将多边形每条边与圆的交点加入多边形上 这样每条边与圆的关系只有两种,要么都在圆内,要么都在圆外 所以只要求相应的三角形与扇形面积即可#pragma comment(linker, "/STACK:102400000,102400000") #include <c原创 2016-09-29 22:00:50 · 501 阅读 · 0 评论