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

1083Moving Tables

Posted by 15000 at 2009-04-02 13:07:13
总是wa,有什么特别的测试数据啊????



#include"stdio.h"
int count()
{
	int arc[201][201]={0};//还没移动的
	int x[201];
	int y[201];	
	
	int i,j,k,t,change,s,sum=0;
	int n;
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		scanf("%d %d",&x[i],&y[i]);
		if(x[i]>y[i])//先把输入的数据排序
		{
			change=x[i];
			x[i]=y[i];
			y[i]=change;
		}
		if(x[i]%2==0)//x[i]为偶数
			x[i]--;
		if(y[i]%2!=0)//y[i]为奇数
			y[i]++;
	}

	for(i=0;i<n;i++)
	{
		//int flat=0;
		int mark[201][201]={0};
		if(!arc[i][i])
		{
			arc[i][i]=1;//桌子移动了
			mark[i][i]=1;
		    for(j=i+1;j<n;j++)
			{
				int flat=0;
				if(!arc[j][j])
				{
			      if(!((x[i]<=x[j]&&x[j]<=y[i])||(x[i]<=y[j]&&y[j]<=y[i])||(x[j]<=x[i]&&y[j]>=y[i])||(x[j]>=x[i]&&y[j]<=y[i])))//此桌子暂时有可能可以同桌子x[i]y[j]同时移动
				  {
					  mark[j][j]=1;//此桌子暂时有可能可以同桌子x[i]y[j]同时移动
					  for(s=i;s<=j-1;s++)
					  {
						  if(mark[s][s]==1&&((x[s]<=x[j]&&x[j]<=y[s])||(x[s]<=y[j]&&y[j]<=y[s])||(x[j]<=x[s]&&y[j]>=y[s])||(x[j]>=x[s]&&y[j]<=y[s])))//此桌子与某些满足可以同x[i]y[i]同时移动的桌子有冲突
						  {
							 flat=1;mark[j][j]=0;//printf("not ok");
							 break;
						  }
					  }
					  if(flat==0)//因为此桌子与所有满足可以同x[i]y[i]同时移动的桌子没有冲突,所以此桌子最终确定可以与x[i]y[i]同时移动
						  {
							  arc[j][j]=1;//桌子移动了
							  mark[j][j]=1;//printf("ok");
						  }
				  }
				}
			}
			sum=sum+10;//printf(" %d ",sum);

		}
		
	}
	printf("%d\n",sum);
	return 1;
}
int main()
{
	int n;
	scanf("%d",&n);
	for(int p=1;p<=n;p++)
		count();
	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