Problem Description
华盛顿在寝室洗衣服,遭到了xyf的嫌弃,于是xyf出了道题给华盛顿来做(然而并没有什么关系-v-!)
xyf扔给华盛顿n个字符串,这些字符串的长度不超过10000并且没有空串。有Q个询问,每个询问一个k,求出这n个字符串中的子串包含了第k个字符串的个数(详情请看hint)
xyf扔给华盛顿n个字符串,这些字符串的长度不超过10000并且没有空串。有Q个询问,每个询问一个k,求出这n个字符串中的子串包含了第k个字符串的个数(详情请看hint)
Input
多组测试。
每组测试先输入n,Q表示n个字符串,Q个询问。(1<= n ,Q <=1e4)
接下来n行每行一个字符串si,(1<= |si| <= 1e4)
再接下来Q行询问,每个询问输入一个整数k (1<=k<=n)
可以告诉你 一组询问中 ∑(si) <= 5e4;
每组测试先输入n,Q表示n个字符串,Q个询问。(1<= n ,Q <=1e4)
接下来n行每行一个字符串si,(1<= |si| <= 1e4)
再接下来Q行询问,每个询问输入一个整数k (1<=k<=n)
可以告诉你 一组询问中 ∑(si) <= 5e4;
Output
每次询问输出一个答案,占一行,表示包含了这第k个字符串的个数。
Sample Input
5 5 a ab abab ababab b 1 2 3 4 5
Sample Output
4 3 2 1 4 Hint 第一个询问了 k=1,给出的5个字符串中包含第k个字符串的有{1,2,3,4} 第一个询问了 k=2,给出的5个字符串中包含第k个字符串的有{2,3,4} 第一个询问了 k=3,给出的5个字符串中包含第k个字符串的有{3,4} 第一个询问了 k=4,给出的5个字符串中包含第k个字符串的有{4} 第一个询问了 k=5,给出的5个字符串中包含第k个字符串的有{2,3,4,5}
解法:数据量不大,那么。。暴力
#include<stdio.h> //#include<bits/stdc++.h> #include<string.h> #include<iostream> #include<math.h> #include<sstream> #include<set> #include<queue> #include<map> #include<vector> #include<algorithm> #include<limits.h> #define inf 0x3fffffff #define INF 0x3f3f3f3f #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1 #define LL long long #define ULL unsigned long long using namespace std; string s[10010]; int pos[10010]; int main() { int n,m; int a; while(cin>>n>>m) { memset(pos,0,sizeof(pos)); for(int i=1;i<=n;i++) { cin>>s[i]; } for(int i=1; i<=n; i++) { int cnt=0; for(int j=1; j<=n; j++) { if(s[j].find(s[i])!=-1) { cnt++; } } pos[i]=cnt; } for(int i=1;i<=m;i++) { cin>>a; cout<<pos[a]<<endl; } } return 0; }