HDU2108 Shape of HDU
2015-09-01 16:46
267 查看
题意简单就是,凸包的判定;
我们可以用向量叉积的正负来判定;
我们去除连续的三个点a,b,c,如果(a-b)叉乘(a-c),如果,大于零,则b点的角度小于180度,这样判断出所有的角度,就可以确定该多边形是不是个凸包。
代码如下
我们可以用向量叉积的正负来判定;
我们去除连续的三个点a,b,c,如果(a-b)叉乘(a-c),如果,大于零,则b点的角度小于180度,这样判断出所有的角度,就可以确定该多边形是不是个凸包。
代码如下
#include<iostream> #include<algorithm> #include<stdio.h> #include<string.h> using namespace std; #define ll long long char str[1010]; struct point { double x,y; }p[1010]; double cross(point a,point b,point c)//计算叉积 { return (b.x-a.x)*(c.y-a.y)-(b.y-a.y)*(c.x-a.x); } 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); } p[n++]=p[0]; p[n++]=p[1]; bool ans=false; for(int i=2;i<n;i++) { if(cross(p[i-2],p[i-1],p[i])<0) { ans=true; break; } } if(!ans) puts("convex");//是凸包 else puts("concave");//不是凸包 } return 0; }
相关文章推荐
- codeforces 415E E. Devu and Flowers(组合数学+容斥原理)
- SharePoint Server 2013介绍v2
- 用一个bat方法 快速进入mysql的cmd
- PAT 1075. PAT Judge (25)
- park入门实战系列--6.SparkSQL(下)--Spark实战应用
- #include<list>
- Android笔记(十三)AsyncTask(一)
- mac os x 添加自定义字体库
- handlebars-----另一种help的写法
- 萤石A1互联网报警盒子破解细节分析
- web.xml中的url-pattern映射规则
- 关于squirrel的那些事
- Compress--- The input point cloud
- 浅谈深度学习(Deep Learning)的基本思想和方法
- hdu 2899 Strange fuction 三分
- Ext错误"Uncaught SyntaxError: Unexpected token <"
- 提高mysql的写入效率
- 大话设计模式笔记 策略模式
- 问题:oracle CLOB类型;结果:oracle中Blob和Clob类型的区别
- iscsi 华为存储配置 上课内容