UVA, 681Convex Hull Finding(凸包)
来源:互联网 发布:atmlh642数据 编辑:程序博客网 时间:2024/05/21 13:03
题意:求凸包上的点。从那个最下面的点逆时针输出。
分析:采用凸包解决,用Graham扫描算法,就出来了
#include <iostream>#include<cstdio>#include<algorithm>#include<cmath>using namespace std;#define N 666#define EPS 1e-3struct point{ double x,y; point(double x,double y):x(x),y(y){} point(){} bool operator< (const point &s)const { return x<s.x||(x==s.x&&y<s.y); } double det(point a) { return x*a.y-y*a.x; } point operator-(point a) { return point(x-a.x,y-a.y); } point operator +(point a) { return point(x+a.x,y+a.y); } point operator *(double s) { return point(x*s,y*s); } point operator /(double s) { return point(x/s,y/s); }};point p[N],res[N];int n,k;int main(){ int tt; scanf("%d",&tt); printf("%d\n",tt); while(tt--) { scanf("%d",&n); for(int i=0;i<n;i++) { scanf("%lf%lf",&p[i].x,&p[i].y); } sort(p,p+n-1); k=0; for(int i=0;i<n-1;i++) { while(k>1&&(res[k-1]-res[k-2]).det(p[i]-res[k-2])<EPS) k--; res[k++]=p[i]; } int t=k; for(int i=n-3;i>=0;i--) { while(k>t&&(res[k-1]-res[k-2]).det(p[i]-res[k-2])<EPS) k--; res[k++]=p[i]; } printf("%d\n",k); int mi=0; for(int i=1;i<k-1;i++) { if(res[mi].y>res[i].y) mi=i; } for(int i=mi;i<k;i++) { printf("%.0f %.0f\n",res[i].x,res[i].y); } for(int i=1;i<=mi;i++) { printf("%.0f %.0f\n",res[i].x,res[i].y); } if(tt){ int a; scanf("%d",&a); printf("-1\n"); } } return 0;}
0 0
- UVA, 681Convex Hull Finding(凸包)
- UVa 681 Convex Hull Finding (凸包,Graham‘s Scan)
- UVA 681 Convex Hull Finding【逆时针输出凸包顶点】
- UVa 681 - Convex Hull Finding
- uva 681 Convex Hull Finding
- 凸包问题Finding the convex hull
- 凸包(convex hull)
- 凸包(Convex hull)
- 凸包(Convex Hull)
- Uva - Convex Hull Finding - 凸包裸题 共线处理
- zoj 3871 Convex Hull(凸包)
- UVA 11626 Convex Hull(凸包:模板题)
- POJ 3787 Convex Hull of Lattice Points(凸包)
- Convex hull 之 Graham_scan(凸包检测算法)
- Hdu 3662 3D Convex Hull(三维凸包)
- UVA 11626 Convex Hull
- UVa 11626 - Convex Hull
- 寻找凸包 convex hull(一)
- Oculus开发笔记(一)
- linux北京老男孩博客学习地址
- 计数模式 算法详解
- UVA 10474 Where is the Marble? (STL最简单运用)
- wcf
- UVA, 681Convex Hull Finding(凸包)
- HTML中img标签及相关属性
- 软件开发——软技能(七、持续集成)
- Android JNI基础:什么是JNI
- AndroidStudio如何配置NDK/JNI开发环境
- java学习总结(06,05.16)计算机对数据的储存方式以及原码反码补码的概念
- Majority Element
- 博客迁移
- STM32F1_SysTick系统滴答