标签:des style http color java os io strong
3 0 0 3 1 1 2 2 2 1 0
Case #1: 100
//109MS 292K
#include<stdio.h>
#include<math.h>
#include<algorithm>
using namespace std;
struct Point
{
int x,y,k,id,vis,flag;
Point(int x=0,int y=0):x(x),y(y) {} //构造函数
};
typedef Point Vector;
Point operator-(Point A,Point B)
{
return Point(A.x-B.x,A.y-B.y);
}
int Cross(Point A,Point B)
{
return A.x*B.y-A.y*B.x;
}
int cmp1(Point a,Point b)
{
if(a.k==b.k)
{
if(a.x==b.x)return a.y<b.y;
return a.x<b.x;
}
return a.k>b.k;
}
int cmp2(Point a,Point b)
{
return a.id<b.id;
}
int ConvexHull(Point* p,int n,Point* ch)//求凸包
{
int m=0;
for(int i=0;i<n;i++)
{
while(m>1&&Cross(ch[m-1]-ch[m-2],p[i]-ch[m-2])<=0)m--;
ch[m++]=p[i];
}
int k=m;
for(int i=n-2;i>=0;i--)
{
while(m>k&&Cross(ch[m-1]-ch[m-2],p[i]-ch[m-2])<=0)m--;
ch[m++]=p[i];
}
if(n>1)m--;
return m;
}
int main()
{
int n,cas=1;
while(scanf("%d",&n),n)
{
Point P[507],ch[507],v[507];
int i;
for(i=0; i<n; i++)
{
scanf("%d%d%d",&P[i].x,&P[i].y,&P[i].k);
P[i].id=i;P[i].vis=P[i].flag=0;
}
sort(P,P+n,cmp1);
v[0]=P[0];
for(i=1;i<n;i++)
if(P[i].k!=P[i-1].k)break;
else
{
v[i]=P[i];
if(P[i].x==P[i-1].x&&P[i].y==P[i-1].y)P[i].vis=v[i].vis=P[i-1].vis=v[i-1].vis=1;
}
int num=i;
int m=ConvexHull(v,num,ch);
if(P[0].k==0)num=0;
for(i=0;i<num;i++)
for(int j=0;j<m;j++)
if(Cross(ch[j]-ch[(j+1)%m],ch[j]-P[i])==0)
{
if(!P[i].vis)P[i].flag=1;
break;
}
sort(P,P+n,cmp2);
printf("Case #%d: ",cas++);
for(int i=0;i<n;i++)
printf("%d",P[i].flag);
printf("\n");
}
return 0;
}
HDU 4946 Area of Mushroom 求凸包边上的点,布布扣,bubuko.com
HDU 4946 Area of Mushroom 求凸包边上的点
标签:des style http color java os io strong
原文地址:http://blog.csdn.net/crescent__moon/article/details/38584803