PKU 1119 Start Up the Startup
http://poj.org/problem?id=1119
サーチエンジン的なものの検索の重みをつけろというような問題。
termはスペースだけで区切られているみたいです。
他にもいろいろやりましたが、なかなか手ごわい問題でした。
string in; bool end(const string&in){ if(SZ(in)<10 || in.substr(0,10)!=string(10,'-'))return false; for(int i=10;i<SZ(in);++i){ if(in[i]!=' ')return false; } return true; } main(){ map<string,int>se; string in; string conv; while(getline(cin,in)){ if(end(in))break; rep(i,SZ(in)){ if(isdigit(in[i]) || in[i]==' ')conv+=in[i]; if(isalpha(in[i]))conv+=tolower(in[i]); } } stringstream ss(conv); string key; while(ss>>key){ se[key]++; } while(getline(cin,in)){ if(end(in))break; conv=""; map<string,int>app; rep(i,SZ(in)){ if(isdigit(in[i]) || in[i]==' ')conv+=in[i]; if(isalpha(in[i]))conv+=tolower(in[i]); } while(getline(cin,in)){ if(end(in))break; rep(i,SZ(in)){ if(isdigit(in[i]) || in[i]==' ')conv+=in[i]; if(isalpha(in[i]))conv+=tolower(in[i]); } } stringstream ss(conv); string key; while(ss>>key){ if(se.count(key))app[key]++; } double ans=0; FOR(iter,app)ans+=sqrt(iter->S*se[iter->F]); printf("%.2f\n",ans); } }