HDU 3833 YY's new problem (简易HASH)

呃。。。比赛的时候没弄出来。。。

做了输入优化,关键在于HASH(见注释)

C++,1609MS:

#include<stdio.h>
#include<string.h>

char hash[10010];
int num;
int bee;
int tot;
char c;
int n;

int main()
{
	int T;
	scanf("%d",&T);
	while (T--) {
		
		bee=0;
		tot=0;
		num=0;

		memset(hash, 0, sizeof(hash));
		
		scanf("%d",&n);
		getchar();
		while ((c=getchar())!='\n') {
			if (c!=' ') {
				num*=10;
				num+=c-'0';
			}
			else {
				hash[num]=1;
				for (int j=1; j<num && num+j<=n; j++) {
					if (hash[num-j]+hash[num+j]==1) {			//以num为中值,一个扫到,一个未扫到
						bee=1;
						break;
					}
				}
				num=0;
			}
		}
		
		hash[num]=1;
		for (int j=1; j<num && num+j<=n; j++) {
			if (hash[num-j]+hash[num+j]==1) {
				bee=1;
			}
		}
		
		if (bee) {
			printf("Y\n");
		}
		else {
			printf("N\n");
		}

	}	
}

a

posted on 2011-07-13 02:21  Eucalyptus  阅读(556)  评论(0编辑  收藏  举报