[POJ2079]Triangle(计算几何-旋转卡壳-最远点对)
2018-01-19 14:37
190 查看
题目:
我是超链接题意:
给出一些点,求顶点在这些点上的面积最大的三角形题解:
枚举一个点,在上次的基础上找另两个点,这样发现另两个点似乎也是单调的,没什么特别的,暴力去找就行了代码:
#include <cstdio> #include <algorithm> using namespace std; const double INF=1e18; const double eps=1e-9; int dcmp(double x) { if (x<=eps && x>=-eps) return 0; return (x>0)?1:-1; } struct po { double x,y; po (double X=0,double Y=0){x=X; y=Y;} }d[50005],sta[50005]; int n,top;double ans; bool operator <(const po &a,const po&b){return a.x<b.x||(a.x==b.x&&a.y<b.y);} double cj(po x,po y){return x.x*y.y-x.y*y.x;} po operator -(po x,po y){return po(x.x-y.x,x.y-y.y);} void tb() { sort(d+1,d+n+1); top=0; for (int i=1;i<=n;i++) { while (top>1 && dcmp(cj(sta[top]-sta[top-1],d[i]-sta[top-1]))<=0) top--; sta[++top]=d[i]; } int k=top; for (int i=n-1;i>=1;i--) { while (top>k && dcmp(cj(sta[top]-sta[top-1],d[i]-sta[top-1]))<=0) top--; sta[++top]=d[i]; } if (n>1) top--; } void rotating() { int j=2,k=3; sta[top+1]=sta[1]; for (int i=1;i<=top;i++) { while (dcmp(cj(sta[j]-sta[i],sta[k]-sta[i]) - cj(sta[j+1]-sta[i],sta[k]-sta[i]))<0) j=j%top+1; ans=max(ans,cj(sta[j]-sta[i],sta[k]-sta[i])/2); while (dcmp(cj(sta[j]-sta[i],sta[k]-sta[i]) - cj(sta[j]-sta[i],sta[k+1]-sta[i]))<0) k=k%top+1; ans=max(ans,cj(sta[j]-sta[i],sta[k]-sta[i])/2); } } int main() { while (scanf("%d",&n) && n!=-1) { double x,y;ans=-INF; for (int i=1;i<=n;i++) { scanf("%lf%lf",&x,&y); d[i]=po(x,y); } tb(); rotating(); printf("%.2lf\n",ans); } }
相关文章推荐
- ZOJ 2419-- Triangle-凸包+旋转卡壳求最大面积三角形(计算几何)
- 计算几何之凸包(三) {旋转卡壳初步}
- [Poj 2187]计算几何之凸包(三) {旋转卡壳初步}
- Codeforces Round #358 (Div. 2) E 计算几何 旋转卡壳求最大三角形面积
- [POJ3608]Bridge Across Islands(计算几何-旋转卡壳-凸多边形间最小距离)
- POJ 2079(计算几何初步——凸包加旋转卡壳)
- poj2079 triangle 凸包 旋转卡壳
- 计算几何之旋转卡壳算法
- 【POJ2079】Triangle-旋转卡壳
- POJ 2079 Triangle(旋转卡壳计算平面点集最大三角形面积)
- POJ 2187(计算几何+旋转卡壳法或暴力)
- [BZOJ1185][HNOI2007]最小矩形覆盖(计算几何-旋转卡壳)
- HDU 5251 矩形面积 (计算几何+旋转卡壳求覆盖凸包的最小矩形面积)
- POJ 2187 计算几何之旋转卡壳
- [计算几何]凸包的旋转卡壳算法
- [BZOJ1069][SCOI2007]最大土地面积(计算几何-旋转卡壳-最远点对)
- POJ 2187 Beauty Contest [旋转卡壳]【计算几何】
- [计算几何][凸包][旋转卡壳] 最远距离点对
- bzoj1069: [SCOI2007]最大土地面积 计算几何 旋转卡壳
- 【BZOJ1185】最小矩形覆盖 计算几何 凸包 旋转卡壳