HDOJ题目地址:传送门
4 0 0 1 0 1 1 0 1 0
convex 海东集团终于顺利成立了!后面的路,他们会顺顺利利吗? 欲知后事如何,且听下回分解——
题解:判多边形是否为凸包,简单计算几何,判断相邻两边叉积为正即可,公式:传送门
#include<stdio.h> #include<iostream> using namespace std; int x[1000]; int y[1000]; /** 用来判断叉积是否大于0 */ int mul(int i,int j,int k){ int x1,x2,y1,y2; x1=x[j]-x[i]; x2=x[k]-x[j]; y1=y[j]-y[i]; y2=y[k]-y[j]; if(x1*y2-y1*x2>0) return 1; else return 0; } int main(){ int n,i; while(cin>>n){ if(n==0) break; for(i=0;i<n;i++){ cin>>x[i]>>y[i]; } int flag=1; for(i=0;i<n;i++){ if(!mul(i,(i+1)%n,(i+2)%n)){ flag=0; break; } } if(flag){ printf("convex\n"); }else{ printf("concave\n"); } } }