记录编号 464246 评测结果 AAAAATTTTT
题目名称 单词默写 最终得分 50
用户昵称 GravatarRegnig 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();