Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

能不能多给一些测试数据哦,总是WA!

Posted by hubo430 at 2006-07-14 16:27:16 on Problem 1113
#include<stdio.h>
#include<math.h>
struct point
{
	int x;
	int y;
}mypoint[1000],temp,stack[3000],x,y,z;
int main()
{
	int n,l,number,top,t,i,j;
	while(scanf("%d%d",&n,&l)==2)
	{
		for(i=0;i<n;i++) scanf("%d%d",&mypoint[i].x,&mypoint[i].y);
		for(i=0;i<n-1;i++)
			for(j=0;j<n-1-i;j++)
				if(mypoint[j].y>mypoint[j+1].y
					||(mypoint[j].y==mypoint[j+1].y&&mypoint[j].x>mypoint[j+1].x))
				{
					temp=mypoint[j];
					mypoint[j]=mypoint[j+1];
					mypoint[j+1]=temp;
				}
		number=1;stack[0]=mypoint[0];top=0;
		for(i=1;i<n;i++)
		{
			if(number==1)
			{
				number++;
				top++;
				stack[top]=mypoint[i];
				continue;
			}
			z=mypoint[i];
			y=stack[top];
			x=stack[top-1];
			t=(y.x-x.x)*(z.y-y.y)-(y.y-x.y)*(z.x-y.x);
			if(t>0)
			{
				number++;
				top++;
				stack[top]=mypoint[i];
				continue;
			}
			top--;number--;i--;
		}
		for(i--;i>=0;i--)
		{
			for(j=0;j<=top;j++) if(stack[j].x==mypoint[i].x&&stack[j].y==mypoint[i].y) break;
			if(j>top||i==0)
			{
				z=mypoint[i];
				y=stack[top];
				x=stack[top-1];
				t=(y.x-x.x)*(z.y-y.y)-(y.y-x.y)*(z.x-y.x);
				if(t>0)
				{
					number++;
					top++;
					stack[top]=mypoint[i];
					continue;
				}
				top--;number--;i++;
			}
		}
		//for(i=0;i<=top;i++) printf("%d %d\n",stack[i].x,stack[i].y);
		double pi=3.1415926,sum=0;
		for(i=1;i<=top;i++) 
			sum+=sqrt((stack[i].x-stack[i-1].x)*(stack[i].x-stack[i-1].x)+(stack[i].y-stack[i-1].y)*(stack[i].y-stack[i-1].y));
		sum+=pi*2*l;
		printf("%.0lf\n",sum);
	}
	return 0;
}













Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator