呃。。。比赛的时候没弄出来。。。
做了输入优化,关键在于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