HDU 2108 Shape of HDU(凸包判定)
来源:互联网 发布:three.js 源码 编辑:程序博客网 时间:2024/06/15 13:20
Shape of HDU
Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 8481 Accepted Submission(s): 3895
Problem Description
话说上回讲到海东集团推选老总的事情,最终的结果是XHD以微弱优势当选,从此以后,“徐队”的称呼逐渐被“徐总”所取代,海东集团(HDU)也算是名副其实了。
创业是需要地盘的,HDU向钱江肉丝高新技术开发区申请一块用地,很快得到了批复,据说这是因为他们公司研发的“海东牌”老鼠药科技含量很高,预期将占全球一半以上的市场。政府划拨的这块用地是一个多边形,为了描述它,我们用逆时针方向的顶点序列来表示,我们很想了解这块地的基本情况,现在请你编程判断HDU的用地是凸多边形还是凹多边形呢?
创业是需要地盘的,HDU向钱江肉丝高新技术开发区申请一块用地,很快得到了批复,据说这是因为他们公司研发的“海东牌”老鼠药科技含量很高,预期将占全球一半以上的市场。政府划拨的这块用地是一个多边形,为了描述它,我们用逆时针方向的顶点序列来表示,我们很想了解这块地的基本情况,现在请你编程判断HDU的用地是凸多边形还是凹多边形呢?
Input
输入包含多组测试数据,每组数据占2行,首先一行是一个整数n,表示多边形顶点的个数,然后一行是2×n个整数,表示逆时针顺序的n个顶点的坐标(xi,yi),n为0的时候结束输入。
Output
对于每个测试实例,如果地块的形状为凸多边形,请输出“convex”,否则输出”concave”,每个实例的输出占一行。
Sample Input
40 0 1 0 1 1 0 10
Sample Output
convex海东集团终于顺利成立了!后面的路,他们会顺顺利利吗?欲知后事如何,且听下回分解——
判断是否凸包
#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<cmath>#include<queue>#include<stack>#include<vector>#include<cstring>#include<string>#include<algorithm>using namespace std;#define ll long long#define ms(a,b)memset(a,b,sizeof(a))#define eps 1e-10#define inf 1e8double a[4][4] = { {0,0,0,0},{0,-1,0,0},{0,0,0,-1},{0,-1,0,-1} } ;int n;double add(double a,double b){ if(abs(a+b)<eps*(abs(a)+abs(b))) return 0; return a+b;}struct P{ double x,y; double val; double len; P(){} P(double x,double y): x(x),y(y){} P operator + (P p) { return P(add(x,p.x),add(y,p.y)); } P operator - (P p) { return P(add(x,-p.x),add(y,-p.y)); } P operator *(double d) { return P(x*d,y*d); } double dot (P p) { return add(x*p.x,y*p.y); } double det(P p) { return add(x*p.y,-y*p.x); }}p[2000];bool on_seg(P p1,P p2,P q){ return (p1-q).det(p2-q)==0&&(p1-q).dot(p2-q)<=0;}P intersection(P p1,P p2,P q1,P q2){ return p1+(p2-p1)*((q2-q1).det(q1-p1)/(q2-q1).det(p2-p1));}bool cmp_x(const P& p,const P & q){ if(p.x!=q.x) return p.x<q.x; return p.y<q.y;}vector<P> convex_hull(P *ps,int n){ sort(ps,ps+n,cmp_x); int k=0; vector<P> qs(n*2); if(n==0) return qs; for(int i=0;i<n;i++) { while(k>1&&(qs[k-1]-qs[k-2]).det(ps[i]-qs[k-1])<=0) k--; qs[k++]=ps[i]; } for(int i=n-2,t=k;i>=0;i--) { while(k>t&&(qs[k-1]-qs[k-2]).det(ps[i]-qs[k-1])<=0) k--; qs[k++]=ps[i]; } qs.resize(k-1); return qs;}struct node{ double extrawood; double val; int flag; int cnt;}ans;int main(){ int n; while(~scanf("%d",&n),n) { for(int i=0;i<n;i++) scanf("%lf%lf",&p[i].x,&p[i].y); if(n==2) { cout<<"concave"<<endl; continue; } vector<P> q=convex_hull(p,n); if((int)q.size()==n) cout<<"convex"<<endl; else cout<<"concave"<<endl; } return 0 ;}
阅读全文
0 0
- HDU 2108 Shape of HDU (凸包的判定)
- HDU 2108 Shape of HDU(凸包判定)
- HDU 2108 Shape of HDU(凸包)
- HDU 2108 Shape of HDU(凸or凹多边形判定)
- HDU 2108 Shape of HDU(凸or凹多边形判定)
- HDU 2108 Shape of HDU [凸包.判断凸包]
- hdu-2108-Shape of HDU(凸凹多边形的判定)
- hdu 2108 Shape of HDU(计算几何:凸包)
- 【计算几何】HDU 2108 Shape of HDU 凸包
- HDU 2108 Shape of HDU 判断凸包
- hdu 2108 Shape of HDU(凸包模板题)
- HDOJ 2108 Shape of HDU(凸包问题)
- Shape of HDU 2108
- Shape of Hdu 2108
- 2108 Shape of HDU
- HDU 2108 Shape of HDU
- HDU 2108 Shape of HDU
- hdu 2108 Shape of HDU
- 远程仓库
- jQuery的each和jQuery数组的each
- aerospike 持久化磁盘时,namespace与磁盘的关系
- HDU-5889-Barricade
- 微服务API Gateway
- HDU 2108 Shape of HDU(凸包判定)
- 添加远程库
- Vue 组件间滚动条互相影响 详情页列表页滚动条相互影响的解决方案 (或许就是你的正解)
- RTX2016的安装及网卡配置注意事项
- Maven依赖调解、 可选依赖、 依赖冲突 排除、 归类依赖、优化依赖
- 惊为天人:当《Minecraft》遇上4K
- bootstrap在IE下table丢失横向滚动条的问题
- 从远程库克隆
- mysql的学习(从入门到学习mysql编程语句)