Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
STL的hash_map就是爽撒。。贴AC代码# include <iostream> #include <ext/hash_map> # include <string> # include <cstring> # include <cstdio> # include <cmath> using namespace std; using namespace __gnu_cxx; struct str_hash { size_t operator()(const string& str) const { return __stl_hash_string(str.c_str()); } }; char *deal(char *pos) { for(int i=0;i<strlen(pos);i++) { if(pos[i]>='A'&&pos[i]<='Z') pos[i]+=32; else if(pos[i]>='a'&&pos[i]<='z'); else if(pos[i]>='0'&&pos[i]<='9'); else { for(int j=i+1;j<=strlen(pos);j++) pos[j-1]=pos[j]; i--; } } return pos; } using namespace __gnu_cxx; int main() { char line[300]; bool one=1; hash_map<string,int,str_hash> l1,l2; l1.clear(); while(1) { double total=0; l2.clear(); gets(line); if(!strcmp(line,"----------")) break; while(strcmp(line,"----------")!=0) { char *p=strtok(line," "); string temp; if(p) { temp=string(deal(p)); if(temp.length()) { if(one) { if(l1.find(temp)!=l1.end()) l1[temp]++; else l1[temp]=1; } else { if(l2.find(temp)!=l2.end()) l2[temp]++; else l2[temp]=1; } } } while((p=strtok(NULL," "))) { temp=string(deal(p)); if(temp.length()) { if(one) { if(l1.find(temp)!=l1.end()) l1[temp]++; else l1[temp]=1; } else { if(l2.find(temp)!=l2.end()) l2[temp]++; else l2[temp]=1; } } } gets(line); } if(one) one=0; else { for(hash_map<string,int,str_hash>::iterator it=l2.begin();it!=l2.end();it++) { hash_map<string,int,str_hash>::iterator t=l1.find(it->first); if(t!=l1.end()) { total+=sqrt((double)(it->second)*(t->second)); } } printf("%.2f\n",total); } } // system("pause"); return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator