摘要:
http://acm.uestc.edu.cn/problem.php?pid=1447给定一组点集,求至多选四点,使其所围成的面积最大。刚开始四重循环,直接超时掉。后来听说要用到旋转卡壳,且是在求三角形面积基础上求四边形面积的。在AC了一道旋转卡壳法求最大三角形面积后,终于把这道给A了。本题可以把四边形分为两个三角形的并,再用旋转卡壳法分别求出这两个三角形的最大面积。如下图所示,固定i,j点,分别找到这样的h,k点使三角形ijk和三角形ijh面积都最大。#include<stdio.h>#include<stdlib.h>#include<string.h> 阅读全文
摘要:
http://poj.org/problem?id=3304在二维空间上,给定一组线段,能否存在这样的一条直线,使所有线段在这条直线的投影会在一个点上。如果沿着这个投影点做直线的垂线,那么这条垂线必会与所有的线段相交。那么本题就转换为能否找到一条直线与所有的线段相交。想找这样的直线,就要去离散化的枚举,本题怎样有效的枚举是关键。首先假设有一条直线与所有的线段相交,慢慢平移这条直线,使它恰好在某条线段L1的端点上。当然这个时候直线还是与所有的线段相交。然后让直线在这个端点上慢慢旋转,使到直线又经过线段L2的端点。L2和L1要满足不是同一条线段,就算相同,你仍可以继续旋转,总会让直线找到L2,且不 阅读全文