#include <iostream> #include <algorithm> #include <cstdio> #include <cstring> #include <bitset> using namespace std; typedef long long LL; const int M=5*1e6+5; bitset<1005>b[12]; bitset<1005>ans; char s[5000005]; int main() { int N; while(scanf("%d",&N)!=EOF) { for(int i=0;i<10;i++) b[i].reset(); for(int i=0;i<N;i++) { int n; scanf("%d",&n); for(int j=1;j<=n;j++) { int k; scanf("%d",&k); b[k].set(i); } } getchar(); gets(s); ans.reset(); int len=strlen(s); for(int i=0;i<len;i++) { ans=ans<<1; ans.set(0); ans=ans&b[s[i]-‘0‘]; if(ans[N-1]==1){ char c=s[i+1]; s[i+1]=‘\0‘; puts(s+i-N+1); s[i+1]=c; } } } return 0; }
hdu 5972---Regular Number(字符串匹配)
原文:http://www.cnblogs.com/chen9510/p/6941626.html