计算几何
拔光祖国小草
存放一下做的题。
展开
-
POJ1106 (极角排序)
术业有专攻,想练练几何。 题目:给你一个半圆,给你n个点,问半圆最大能覆盖几个点。 题解:第一次做平面几何确实没什么思路,转换一下,先把整个圆外的点给去除,再枚举任意一个点,和圆心连成一条直线,(想像一下如果最优解的直径除了圆心没有经过一个点,你转过去一定角度直至经过一个点是不影响结果的)那么圆就分成两个半圆了,用叉积判断点与直线的位置,取较大值就可以了 还需要考虑如下情况:1、有些点与圆心重原创 2017-11-28 09:49:38 · 290 阅读 · 0 评论 -
POJ 1654(计算几何基础多边形面积)
题意:给你一串数字,每个数字分别代表不同的方向,一定是在1x1的格子中走动,问最后围成的多边形面积是多少题解:将整个多边形划分, ans = (∑相邻两个点分别与原点构成的线段的叉积 )/ 2 由叉积的几何意义可知求得的结果是一个平行四边形的面积#include <cstdio>#include <cstring>#include <iostream>#include <algorithm原创 2017-12-26 00:44:01 · 180 阅读 · 0 评论 -
uva 1606 (思维+极坐标扫描线)
题意:平面上给出n个点,分为黑白两种颜色,问在其中给出一个隔板,使隔板左边+隔板右边的棋子数量最大(左右隔板棋子颜色不同、隔板上的棋子算任意一边)寒假的第一题,屯了很久没做,自己的思维还是不够做这个题。 枚举每一个点,当做基准点,算出相对坐标,再算出一个极坐标角,用来排序,基准点即可看作是(0,0)再枚举点a与基准点p的直线l1,b与基准点p的直线l2,叉积判断是否在一侧,若超过180以原创 2018-01-24 21:54:47 · 389 阅读 · 0 评论 -
Gym - 101128J (凸包+二分)
题意:问有多少个黑点在任意三个红点组成的三角形内 题解:必然一眼能看出是求点在红色点组成的凸包内吧。然后暴力枚举黑点与凸包判叉积的话会T,所以有一个优化是,将凸包分成x个三角形(固定一个起点,枚举任意两个相邻的点),然后进行二分,找到一个叉积>=0 一个<=0的时候,再判断是否在第三条边左侧就ok了(因为在凸包外也有满足叉积>=0 && 叉积<=0的情况)...原创 2018-04-11 17:40:28 · 377 阅读 · 0 评论