计算几何学习2

由于下午的训练赛(主要是自己懒

今天的进程比较缓慢 做了几道

poj 1696

给你一些点 你从某一个点出发 只能向左转 并且不能穿过之前走过的轨迹

问你怎样走能经过最多的点并输出轨迹 n <= 50

做法就是枚举出发点

贪心 找左侧偏角最小的点前进 并记录路径

找一条最长的输出

用叉积判断方向 点积计算偏角 路径相交是规范相交

poj 1410

矩形和线段是否有交

只要注意矩形包括内部就行了

poj 1584

阅读题

步骤

1)判断一个多边形是不是凸多边形

 各种复杂度的算法都有 可以绕着外侧像凸包一样判断边的关系 O(N)

或者枚举边判断所有点是不是在一侧O(N^2)

2)圆心是不是在多边形内部

向上一篇提到的 在凸多边形中 与各顶点叉积方向一样即可

3)圆是不是和多边形交

计算圆到各线段上点的最短距离判断 用上一篇中的CrossVP即可

poj 2074

计算最大连续可视范围

观测点和障碍物连线 再求与待测线段的交点

将交点扫一遍 得到若干覆盖区域 在未覆盖区域里找连续的最大即可

有一个trick = = 那就是障碍物不一定在观测点和待测区域之间 不管这种就好

感觉就是写完离AC总是差一步

这种题目中的trick还要多积累 少走些弯路

明天目标:

一部分还剩三题左右 明天完成

在明天开始凸包练习

原文地址:https://www.cnblogs.com/drzdk/p/7202538.html