欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Codeforce 2018-2019 ICPC Southern Subregional Contest H.BerOS File Suggestion

程序员文章站 2024-02-17 12:38:10
...

 题意:

给你N个长度不超过8个字符的字符串,然后进行Q次查询,对于每次查询的字符串Sq,输出含有Sq的字符串的个数和其中一个字符串,如果没有则输出0和-1。

样例输入:

4
test
contests
test.
.test
6
ts
.
st.
.test
contes.
st
样例输出:

1 contests
2 .test
1 test.
1 .test
0 -
4 test.

思路:先枚举每一个字符串的连续字串,存入map中,map存的是每个字符所在的字符串的位置,用set去重,set的大小就是这个查询的数量。

代码:

#include <iostream>
#include <vector>
#include <map>
#include <set>
using namespace std;
map<string,set<int> >mp;

int main(int argc, char *argv[])
{
	int n;
	string s[10005];
	cin>>n;
	string temp;
	for(int i=0;i<n;i++)
	{
		cin>>s[i];
		int len=s[i].length();
		for(int j=1;j<=len;j++)
		{
			for(int h=0;h+j<=len;h++)
			{
				temp=s[i].substr(h,j);
				//cout<<h;
				//cout<<temp<<endl;
				mp[temp].insert(i);
			}
		}
	}
	int k;
	cin>>k;
	while(k--)
	{
		string ss;
		cin>>ss;
		if(!mp.count(ss))
		{
			cout<<"0 -"<<endl;
		}
		else
		{
			cout<<mp[ss].size()<<" "<<s[*mp[ss].begin()]<<endl;
		}
	}
	return 0;
}

 

相关标签: codeforce