POJ 2503 Babelfish
来源:互联网 发布:数控车床圆锥编程 编辑:程序博客网 时间:2024/05/20 07:16
水题,鉴于是第一过了的hash,还是记录下... 想用SET来着,可是不熟,同时记录下标和哈希值不会用... ...自己sort加二分查找过的。
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<set>using namespace std;const int N=999983;const int hash1=131;char a[100005][20];int len;struct word{ int hv; int idx;}w[100005];int Hash(char *s){ int ret=0; for(int i=0;s[i]!='\0';i++) { ret=ret*hash1+s[i]; } return ret;}bool cmp(word x,word y){ return x.hv<y.hv;}int Find(int k){ int l=0,r=len-1,m; m=(l+r)>>1; while(w[m].hv!=k&&l<=r) { if(w[m].hv<k) { l=m+1; } if(w[m].hv>k) { r=m-1; } m=(l+r)>>1; } if(w[m].hv!=k)return -1; else return w[m].idx;}char getstr[100];char word[100];int main(){ int i; for(i=0;gets(getstr),getstr[0]!='\0';i++) { int j=0; while(getstr[j]!=' ') { a[i][j]=getstr[j]; j++; } a[i][j]=getstr[j]; int k=Hash(getstr+j+1); w[i].hv=k; w[i].idx=i; } len=i; sort(w,w+len,cmp); while(gets(word)) { int k=Hash(word); int index=Find(k); if(index==-1)printf("eh\n"); else printf("%s\n",a[index]); } return 0;}
- poj 2503 Babelfish
- POJ 2503 Babelfish(HASH)
- poj 2503 Babelfish
- POJ 2503 Babelfish
- POJ 2503 Babelfish
- poj 2503 Babelfish
- POJ 2503 Babelfish
- poj 2503 Babelfish 【hash】
- poj 2503 Babelfish【trie】
- POJ 2503 Babelfish
- poj-2503 Babelfish
- poj-2503 Babelfish
- poj 2503 Babelfish
- poj 2503 Babelfish
- POJ 2503 Babelfish
- POJ 2503 Babelfish (Hash)
- POJ 2503 Babelfish
- poj 2503 Babelfish(二分)
- __uuidof()函数
- java 调用 lua
- 捕获事件
- 议员是如何投票的?
- 使用BitSet查找某个范围内的所有的素数的个数(摘自java核心技术.卷I)
- POJ 2503 Babelfish
- test
- c++ 私有继承
- 解决办法:tomcat should be set in Tomcat Perferencr Pages
- Sql Server查询表结构和索引信息
- Codeforces Round #197 (Div. 2) D. Xenia and Bit Operations(容器做法)
- ZOJ Problem Set - 1003 Crashing Balloon
- C++ HOOK应用
- Jquery获取RadioButtonList的值