单词默写
来源:互联网 发布:怎么查看淘宝客的佣金 编辑:程序博客网 时间:2024/03/29 21:51
812. 单词默写
★☆ 输入文件:engzam.in
输出文件:engzam.out
简单对比时间限制:1 s 内存限制:128 MB
【问题描述】
小D前一段日子刚刚参加了一次非常苛刻的英语考试。
考试不仅包括了听力、选择、填空等基本题型,还包括了一种特殊的单词默写题。这类题目都是按照以下形式给出的:
在本学期你所学的所有前缀是B的单词中,在课本中出现次数不少于L的有多少个。
例如小D这个学期只学过三个单词a、ab、bc,它们出现的次数分别是1、2、3;若给出询问(B = a,L = 2),那么前缀为a的单词一共有两个,是a和ab,其中频率不少于2的只有一个,是ab。
这个学期小 D学过的单词非常多,而考试给出的这类询问也非常多。这么困难的任务小D当然不可能解决,于是这个问题被交给了你。
【输入文件】
输入文件第一行包含两个用空格隔开的整数N、M,分别表示小D本学期学过的单词数和考试中出现的询问数。
接下来N行,每行包含用空格隔开的一个单词A和一个整数P,描述小D本学期学过的一个单词A以及其出现的次数P。
接下来M行,每行包含用空格隔开的一个单词B和一个整数L,描述考试中给出的一个询问。
你可以假定所有单词均由小写字母组成,且长度不超过10。
【输出文件】
输出文件一共包含M行。
对于每个考试的询问输出一行一个整数,表示该问题的答案。
【样例输入】
3 3
a 1
ab 2
bc 3
a 2
a 1
a 3
【样例输出】
1
2
0
【样例说明】
前缀为a的单词一共有两个,是a和ab,出现次数分别为1和2。
【评分标准】
本题包含10个测试点,对于每个测试点,如果你的输出和标准输出完全一样则得到该测试点的全部分数,否则得0分。
【数据规模】
对于50%的测试数据,满足N、M ≤ 1 000
对于100%的测试数据,满足N、M ≤ 100 000,P、L ≤ 100 000
字典树+DFS、、建好树直接查找即可。
#include<cstdio>#include<cstring>using namespace std;char str[20];int num,tot;struct node{ int next[26]; int num; node (){ num=0; memset(next,-1,sizeof(next)); }}T[500000];void insert(){ int root=0; for(int i=0;str[i];i++){ int t=str[i]-'a'; if(T[root].next[t]==-1){ T[root].next[t]=tot++; } root=T[root].next[t]; } T[root].num=num;}int ans;void dfs(int root){ // printf("%d\n",root); if(T[root].num>=num){ ans++; } for(int i=0;i<26;i++){ int r=T[root].next[i]; if(r!=-1) dfs(r); }}void find(){ int root=0; for(int i=0;str[i];i++){ int t=str[i]-'a'; if(T[root].next[t]==-1){ return ; } root=T[root].next[t]; }// printf("this %d\n",root); dfs(root);}int main(){ freopen("engzam.in","r",stdin); freopen("engzam.out","w",stdout); int n,m; tot=1; scanf("%d%d",&n,&m); for(int i=0;i<n;i++){ scanf("%s%d",str,&num); insert(); } while(m--){ scanf("%s%d",str,&num); ans=0;find(); printf("%d\n",ans); } return 0;}
- 单词默写
- Excel:做个单词默写本
- 单词默写题解--Trie树模板
- 默写网站
- 开幕词-默写-english
- 默写八皇后
- 讨厌默写企业文化
- 默写AJAX基本框架
- 最短路默写
- 今天默写10题。。。
- NEC2 背诵默写
- 学校排名程序默写
- 今天考JAVA,默写代码
- NKOI 1120 最短路默写
- 【浑水摸鱼】化学方程式默写练习器
- 淘宝小爬虫(默写)
- 单词。。
- 单词
- 中文 555 句
- sql中,如何得到新增数据的id(主键自增)
- UML类图
- PhoneGap 2.0 开发培训讲义
- 防止头文件重复引用
- 单词默写
- Project Euler problem 13
- 磁盘分区后系统无法启动
- HTML5 Web 开发培训讲义
- Google Android Resource
- 关于Excel操作编写的一个软件设计构思案例[连载] --辅助功能:补全缺少数据、树定位、文本读与保存
- 主线程等待所有子线程执行完毕例子
- Varnish 入门
- POJ3368 离散化+ST算法求解RMQ