杭电3952

直接用暴力扫描的做法,注意叉乘可以用来判断两直线是否相交。

如果线段P1P2和直线Q1Q2相交,则线段P1P2跨立直线Q1Q2,

即:( P1 - Q1 ) × ( Q2 - Q1 ) * ( Q2 - Q1 ) × ( P2 - Q1 ) >= 0


#include 
#include 
using namespace std;
struct node
{
	int k;
	int x[15],y[15];
}Point[15];
int Judge(int x1,int y1,int x2,int y2,int x3,int y3,int x4,int y4)		//叉乘判断 
{
	int a=x3-x1,b=y3-y1;
	int c=x2-x1,d=y2-y1;
	int e=x4-x1,f=y4-y1;
	if((a*d-b*c)*(c*f-d*e)>=0)return 1;
	return 0;
}
int main()
{
	int T;
	int N;
	int K,i,j,Case=0,p,w,sum,Max;
	scanf("%d",&T);
	while(T--)
	{
		Max=0;
		scanf("%d",&N);
		for(i=1;i<=N;i++)
		{
		scanf("%d",&K);
		Point[i].k=K;
		for(j=1;j<=K;j++)
		{
			scanf("%d%d",&Point[i].x[j],&Point[i].y[j]);
		}
		}
		if(N==1)		//一个图形的情况要单独讨论 
		{
		printf("Case %d: 1\n",++Case);
		continue;
		}
		for(i=1;iMax)Max=sum;		//把大的值赋予Max 
				}
				}
			}
		}
		printf("Case %d: %d\n",++Case,Max);
	}
return 0;
}


 
  

你可能感兴趣的:(杭电题目)