社区讨论
我是妹子,刚学OI。全部WA显示too long,求大佬看一下谢谢
P3879[TJOI2010] 阅读理解参与者 10已保存回复 10
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 10 条
- 当前快照
- 1 份
- 快照标识符
- @mi7xksbh
- 此快照首次捕获于
- 2025/11/21 05:15 4 个月前
- 此快照最后确认于
- 2025/11/21 05:15 4 个月前
CPP
#include<cstdio>
#include<bitset>
#include<cstring>
#include<iostream>
#include<algorithm>
#define ll long long
#define rgi register int
#define maxn 100005
#define N 500005
using namespace std;
int n,m,trie[N][100],tot,ans[maxn];
string s;
bitset<N>num[1005];
inline int read()
{
int x=0,f=1;
char c=getchar();
for(;!isdigit(c);c=getchar())
if(c=='-')
f=-1;
for(;isdigit(c);c=getchar())
x=(x<<3)+(x<<1)+c-'0';
return x*f;
}
void upd(int k,string s)
{
int p=0;
for(int i=0;i<s.size();i++)
{
if(!trie[p][s[i]-'A'])
trie[p][s[i]-'A']=++tot;
p=trie[p][s[i]-'A'];
}
num[k][p]=1;
}
inline bool check(int k,string s)
{
int p=0;
for(int i=0;i<s.size();i++)p=trie[p][s[i]-'A'];
return num[k][p];
}
int main()
{
n=read();
for(rgi i=1;i<=n;++i)
{
m=read();
for(rgi j=1;j<=m;j++)
{
cin>>s;
upd(i,s);
}
}
m=read();
for(rgi i=1;i<=m;++i)
{
cin>>s;
int tmp=0;
for(rgi j=1;j<=n;j++)
{
if(check(j,s))
ans[++tmp]=j;
}
for(rgi j=1;j<tmp;++j)
cout<<ans[j]<<" ";
if(tmp>=1)cout<<ans[tmp];
puts(" ");
}
return 0;
}
回复
共 10 条回复,欢迎继续交流。
正在加载回复...