查看文章 |
Harbin 2010 3D Convex Hull http://acm.hdu.edu.cn/showproblem.php?pid=3662 很果的三维凸包后求凸包面数,各种三维凸包方法皆可过。
Tianjin 2010 Hyperspace Travel http://acm.hdu.edu.cn/showproblem.php?pid=3728 求任意两圆的交点,对于在每一个圆上交点进行相对于圆心的极角排序,然后把相邻交点连上边,难点在构图,构建完图后怎么做都行了。
Hangzhou 2010 Rotational Painting http://acm.hdu.edu.cn/showproblem.php?pid=3685 先求多边形的重心,可以通过类似求多边形面积的方法,将多边形划分为面积为正或负的小三角形,求出每个小三角形的重心和面积,计算加权平均数求出多边形重心。再求出多边形的凸包,要将凸包上的共线点剔除。再枚举凸包的每一条边,检验重心在其边所在直线上的投影点是否在边内,若是则答案加一。
Hangzhou 2010 Gunshots http://acm.hdu.edu.cn/showproblem.php?pid=3684 由题目描述可以得到一个推论,每个多边形的点构成的凸包也是互不相交的,于是多边形转化为凸包。接下来问题是如何找到与射线第一个相交的凸包,枚举肯定会超时。先考虑一个凸包是否与射线相交,如果凸包与射线相交,那么凸包被射线分割为左右两边上点所连成的线段一定与射线相交,设交点为x。为了确定这两点可以用两条方向与射线相同的直线夹住凸包,那么在这两条直线上的点一定分别是左右两边的点。对于若干个与射线相交的凸包,最先一定与射线相交的凸包一定是x距离射线源点最近的凸包。 根据上面的讨论,可以得出:先将射线极角排序,按照极角序遍历射线,对于每一个凸包,可以利用类似旋转卡壳的方法求出左右两点a,b。然后判断ab是否与射线相交,求出最近的交点,确定最先一定与射线相交的凸包,问题得到解决。时间复杂度均摊后是O(N*M)的。
Chengdu 2010 Detector Placement http://acm.hdu.edu.cn/showproblem.php?pid=3712 这题涉及了许多计算几何基础知识,细节很多,注意全反射的情况。
Fuzhou 2010 Fermat Point in Quadrangle http://acm.hdu.edu.cn/showproblem.php?pid=3694 结论题,费马点不是两条对角线交点就是四边形的四个点中的一个。
Fuzhou 2010 Shade of Hallelujah Mountain http://acm.hdu.edu.cn/showproblem.php?pid=3692 |

