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

Re:329ms

Posted by weigetc at 2010-04-28 14:20:19 on Problem 3349
In Reply To:Re:329ms Posted by:openxxx at 2010-02-13 14:42:39
> 附代码:
> #include<iostream>
> #include<cstdio>
> using namespace std;
> int h[150000];
> unsigned int a[100005][6];
> int hash(int k)
> {
> 	unsigned int i,h=1;
> 	for(i=0;i<6;i++)
> 	{
> 		h*=a[k][i];
> 	}
> 	h=h%149997;
> 	return h;
> }
> bool judge(int x,int y)
> {
> 	int i,j,k;
> 	bool ch;
> 	for(i=0;i<6;i++)
> 	{
> 		ch=true;
> 		for(j=0;j<6;j++)
> 		{
> 			if(a[x][j]!=a[y][(j+i)%6])
> 			{
> 				ch=false;
> 				break;
> 			}
> 		}
> 		if(ch)
> 			return true;
> 	}
>         for(i=0;i<6;i++)
> 	{
> 		ch=true;
> 		for(j=0,k=5;j<6;j++,k--)
> 		{
> 			if(a[x][j]!=a[y][(k+i)%6])
> 			{
> 				ch=false;
> 				break;
> 			}
> 		}
> 		if(ch)
> 			return true;
> 	}
> 	return false;
> }
> int main()
> {
> 	int n,i,j,k,t,x,kk;
> 	bool ch=true,th,kh=true;
> 	char c;
> 	cin>>n;
>         c=getchar();
> 	for(i=1;i<=n;i++)
> 	{
> 		for(j=0;j<=5;j++)
> 		{
> 			x=0;
> 			c=getchar();
> 			while(c!=' '&&c!='\n')
> 			{
> 				x=x*10;
> 				x+=(c-48);
> 				c=getchar();
> 			}
> 			a[i][j]=x;
> 		}
> 	        k=hash(i);
> 		t=1;
> 		kk=k;
>                 if(h[kk]==0)
> 		    th=false;
> 		while(h[kk]!=0)
> 		{
> 			th=judge(h[kk],i);
> 			if(th)
> 			{
> 				ch=false;
> 				printf("Twin snowflakes found.\n");
> 				break;
> 			}
> 			kk=(k+t*t)%149997;
> 			t++;
> 		}
> 		if(!th)
> 		    h[kk]=i;
> 	}
> 	if(ch)
> 		printf("No two snowflakes are alike.\n");
> 	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