• poj 2503


    无限感慨啊,这道题半年前就做过,无限wa就放弃了,今天又重做这题,依旧没变无限wa,只不过这次敲了20分钟就完了,代码也简洁了,哈希函数直接自己构造的,比之前熟练了,然后检查,历经一个小时之后,才发现把'eh'当成了'en',改后ac,300ms,然后再翻出之前的代码,果然是同样的错误,回想起半年前的那一整个下午,真是欲哭无泪啊

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    using namespace std;
    const int maxn=100000+3;
    int head[maxn],next[maxn];
    char s1[maxn][15],s2[maxn][15];
    int hash(char *s)
    {
    	int k=0;
    	while(*s!='\0')
    	{
    		k=((k*26)%maxn+(*s-'a'))%maxn;
    		s++;
    	}
    	return k;
    }
    int main()
    {
    	char s[50];
    	memset(head,-1,sizeof(head));
    	int i=0;
    	while(gets(s))
    	{
    		if(sscanf(s,"%s %s",s1[i],s2[i])!=2) break;
    		int k=hash(s2[i]);
    		next[i]=head[k];
    		head[k]=i;
    		i++;
    	}
    	while(gets(s))
    	{
    		int k=hash(s);
    		for(i=head[k];i!=-1;i=next[i])
    		{
    			if(strcmp(s2[i],s)==0)
    			{
    				printf("%s\n",s1[i]);
    				break;
    			}
    		}
     		if(i==-1) printf("eh\n");
    	}
    	return 0;
    }
    


     

  • 相关阅读:
    基础
    基础
    基础
    基础
    基础
    基础
    基础
    基础
    Gym102361A Angle Beats(直角三角形 计算几何)题解
    Petrozavodsk Summer Training Camp 2016H(多标记线段树)题解
  • 原文地址:https://www.cnblogs.com/lj030/p/3002219.html
Copyright © 2020-2023  润新知