Codeforces 861D - Polycarp's phone book

861D - Polycarp's phone book

思路:用map做的话,只能出现一次循环,否则会超时。

代码:

#include<bits/stdc++.h>
using namespace std;
#define f first
#define s second
#define pb push_back
#define mp make_pair
map<string,int> ma;
string ans[];
int main(){
int n;
string s,nu;
cin>>n;
for(int i=;i<n;i++){
cin>>s;
ans[i+] = "";
for(int j=;j<;j++){
nu = "";
for(int k=j;k<;k++){
nu += s[k];
if(ma[nu] && ma[nu]!=i+) ma[nu]=-;
else ma[nu] = i+;
}
}
}
for(auto it : ma){
if(it.s!=-)
if(ans[it.s]=="" || ans[it.s].size()>it.f.size() )
ans[it.s] = it.f;
}
for(int i=;i<=n;i++)
cout<<ans[i]<<endl;
return ;
}
上一篇:隐马尔科夫_HMM


下一篇:http://www.360doc.com/content/10/1012/09/3722251_60285817.shtml