poj 2187
来源:互联网 发布:微信自媒体 知乎 编辑:程序博客网 时间:2024/06/10 21:07
题意:求最远点对。
思路:旋转卡壳入门题。
AC代码
#include <cstdio>#include <cstring>#include <algorithm>#include <iostream>#include <stack>#include <queue>#include <vector>#include <cmath>#include <map>#include <set>#define ll long long#define llu unsigned long longusing namespace std;const double eps = 1e-8;const double PI = 3.1415926;struct Point { double x,y; Point (double x = 0,double y = 0) : x(x),y(y) {}};Point p[100500],s[100500];struct Line{ Point a,b;};Line line[100];int indl,indp;bool dcmp(double x) { if(fabs(x)-0.0 <= eps) return true; return false;}double dis(Point a,Point b) { return (a.x-b.x)*(a.x-b.x) + (a.y-b.y)*(a.y-b.y);}double cross(Point a,Point b,Point c) { if(dcmp((b.x-a.x)*(c.y-a.y) - (c.x-a.x)*(b.y-a.y))) return 0; return ((b.x-a.x)*(c.y-a.y) - (c.x-a.x)*(b.y-a.y));}int n;double l;bool cmp1(Point a,Point b) { if(a.x != b.x) return a.x < b.x; else return a.y<b.y;}bool cmp2(Point a,Point b) { double m = cross(p[1],a,b); if(dcmp(m)) { return dis(p[1],b) > dis(p[1],a) ? true : false; }else { if(m > 0) return true; else return false; }}void RC(int m) {// if(m == 2) {// printf("%d\n",(int)(dis(s[1],s[2]))); return ;// } double ans = 0.0; s[m+1] = s[1]; int indy = 2; for(int i=1;i<=m;i++) { while(cross(s[i],s[i+1],s[indy+1]) > cross(s[i],s[i+1],s[indy])) { indy++; if(indy == m+1) indy=1; } ans = max(ans,dis(s[i],s[indy])); } printf("%lld\n",(ll)ans);}Point A;int main(){ scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%lf%lf",&p[i].x,&p[i].y); } sort(p+1,p+n+1,cmp1); sort(p+2,p+n+1,cmp2); s[1] = p[1]; s[2] = p[2]; int top=2; for(int i=3;i<=n;i++) { while(top>=2 && cross(s[top-1],s[top],p[i]) <= 0) top--; s[++top] = p[i]; } RC(top); return 0;}
0 0
- poj 2187
- poj 2187
- poj 2187
- poj 2187
- poj 2187
- poj 2187
- POJ 2187
- poj 旋转卡壳三题 poj 2187 poj 2079
- POJ 2187 Beauty Contest
- POJ-2187-凸包
- poj 2187 Beauty Contest
- POJ 2187 Beauty Contest
- poj 2187 Beauty Contest
- POJ 2187 Beauty Contest
- POJ 2187 Beauty Contest
- poj 2187 Beauty Contest
- POJ 2187 Beauty Contest
- POJ 2187 Beauty Conteset
- 设计模式之抽象工厂模式
- LA 3266 || UVALive 3266 Tian Ji -- The Horse Racing 田忌赛马(贪心)
- 10.Java基础:常见IO流----->打印流:PrintStream、PrintWriter
- 04-贝叶斯概率
- leetcodd之candy的前后扫描得结果
- poj 2187
- 【数据结构与算法】——插入排序
- 为什么我们要干一行爱一行
- 上拉电阻与下拉电阻的作用总结
- Codeforces #369 (Div. 2) E. ZS and The Birthday Paradox (勒让德定理+逆元)
- hiho1360 凸多边形
- vulakn教程--Drawing a Triangle--Set up--Physical Device and Queue Family
- 色彩构成与搭配——色彩的原理及分类
- 大数据聚类学习整理