记录编号 |
464246 |
评测结果 |
AAAAATTTTT |
题目名称 |
单词默写 |
最终得分 |
50 |
用户昵称 |
Regnig Etalsnart |
是否通过 |
未通过 |
代码语言 |
C++ |
运行时间 |
5.001 s |
提交时间 |
2017-10-25 15:19:18 |
内存使用 |
61.98 MiB |
显示代码纯文本
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
int n,m,num,res,cnt,i;
string s;
struct Tree
{
int flag;
int son[26];
}t[1000000];
void build(int at,int now)
{
while(now<s.length())
{
int &x=t[at].son[s[now]-'a'];
if(!x)x=++cnt;
at=x;
now++;
}
t[at].flag+=num;
return;
}
void dfs(int now)
{
if(t[now].flag>=num)res++;
for(int j=0;j<26;j++)
{
int to=t[now].son[j];
if(to)dfs(to);
}
return;
}
int que(int at,int now)
{
while(now<s.length())
{
at=t[at].son[s[now]-'a'];
now++;
if(!at)return 0;
}
res=0;
dfs(at);
return res;
}
int Main()
{
freopen("engzam.in","r",stdin);freopen("engzam.out","w",stdout);
ios::sync_with_stdio(false);
cin>>n>>m;
for(i=1;i<=n;i++)
{
cin>>s>>num;
build(0,0);
}
while(m--)
{
cin>>s>>num;
cout<<que(0,0)<<'\n';
}
return 0;
}
int main(){;}
int syy=Main();