题目:

题目背景

XS中学化学竞赛组教练是一个酷爱炉石的人。

他会一边搓炉石一边点名以至于有一天他连续点到了某个同学两次,然后正好被路过的校长发现了然后就是一顿欧拉欧拉欧拉(详情请见已结束比赛 CON900)。

题目描述

这之后校长任命你为特派探员,每天记录他的点名。校长会提供化学竞赛学生的人数和名单,而你需要告诉校长他有没有点错名。(为什么不直接不让他玩炉石。)

输入格式

第一行一个整数 nn,表示班上人数。

接下来 nn 行,每行一个字符串表示其名字(互不相同,且只含小写字母,长度不超过 50)。

第 n+2 行一个整数 m,表示教练报的名字个数。

接下来 m 行,每行一个字符串表示教练报的名字(只含小写字母,且长度不超过 50)。

输出格式

对于每个教练报的名字,输出一行。

如果该名字正确且是第一次出现,输出 OK,如果该名字错误,输出 WRONG,如果该名字正确但不是第一次出现,输出 REPEAT。

输入输出样例
输入 #1

5
a
b
c
ad
acd
3
a
a
e

输出 #1

OK
REPEAT
WRONG

说明/提示

对于 40% 的数据,n≤1000,m≤2000n\le 1000,m\le 2000n≤1000,m≤2000。
对于 70% 的数据,n≤104n\le 10^4n≤104 ,m≤2×104m\le 2\times 10^4m≤2×104 。
对于 100% 的数据,n≤104n\le 10^4n≤104 ,m≤105m≤10^5m≤105 。

分析:

就注意一点就可:数据要开的大一点,之前没过,还以为是因为字典树不够优T了,结果改下数据就过了。
字典树水题。

AC代码:

#include<bits/stdc++.h>
using namespace std;
const int M=1e6+10;
int n,m,tot;
string s;
int vis[M];
int ch[M][30];
void build(string a){int l=a.size();int u=1;for(int i=0;i<l;i++){int c=a[i]-'a';if(!ch[u][c])ch[u][c]=++tot;u=ch[u][c];}vis[u]=1;
}
int query(string a){int l=a.size();int u=1;for(int i=0;i<l;i++){int c=a[i]-'a';if(!ch[u][c])return 0;u=ch[u][c];}int k=vis[u];if(vis[u]!=0)vis[u]++;return k;
}
int main(){cin>>n;tot=1;for(int i=0;i<n;i++){cin>>s;build(s);}cin>>m;for(int i=0;i<m;i++){cin>>s;int x=query(s);if(x==1) cout<<"OK"<<endl;else if(x>1) cout<<"REPEAT"<<endl;else cout<<"WRONG"<<endl;}return 0;
}

字典树模板+洛谷P2580 于是他错误的点名开始了相关推荐

  1. hdu 1671 Phone List 字典树模板

    Given a list of phone numbers, determine if it is consistent in the sense that no number is the pref ...

  2. Luogu P2580 于是他错误的点名开始了 Trie树 字典树

    字典树裸题.每次插入询问串,查询的时候拿出来直接查,信息保留在节点上. #include <bits/stdc++.h> using namespace std;char s[51]; i ...

  3. Phone List POJ - 3630(字典树模板题)

    题意 给定 n个长度不超过 10的数字串,问其中是否存在两个数字串S,T ,使得 S是 T的前缀,多组数据. 题目 Given a list of phone numbers, determine i ...

  4. Poj 2001 Shortest Prefix(字典树模板)

    字典树入门题...... 只需在对应结点记录num值,找到num为1时的前缀,是唯一前缀(只是该单词的前缀),或者一直找找到该单词结尾. #include <iostream> #incl ...

  5. 字典树模板及讲解 http://www.cnblogs.com/tanky_woo/archive/2010/09/24/1833717.html

    Tire的数据结构定义: #define MAX 26 typedef struct Trie { Trie *next[MAX]; int v; //根据需要变化 }; Trie *root; ne ...

  6. 字典树基本介绍(字典树模板)

    转载自:http://www.cnblogs.com/tanky_woo/archive/2010/09/24/1833717.html 字典树(讲解+模版) 又称单词查找树,Trie树,是一种树形结 ...

  7. 【模板】线段树 2 洛谷P3373

    题目描述 如题,已知一个数列,你需要进行下面三种操作: 将某区间每一个数乘上 xx 将某区间每一个数加上 xx 求出某区间每一个数的和 输入格式 第一行包含三个整数 n,m,pn,m,p,分别表示该数 ...

  8. 支配树(洛谷-P5180)

    题目描述 给定一张有向图,求从1号点出发,每个点能支配的点的个数(包括自己) 输入输出格式 输入格式: 第一行两个正整数n,mn,m,表示点数和边数 接下来mm行,每行输入两个整数u,vu,v,表示有 ...

  9. 线段树——最大数——洛谷——1198

    这题可以说是模板题了. 只需要预先开好m大小的线段树,就好了,这就可以处理加点的问题. #include<iostream> #include<cstdio> #include ...

最新文章

  1. 宁波Uber优步司机奖励政策(1月18日~1月24日)
  2. 企业微信提示服务商未响应请求,将无法获取用户事件回调
  3. systemd管理mysql多实例_使用 systemd 配置多个 MySQL 8.0 实例
  4. HDU 1203 I NEED A OFFER!(01背包)
  5. openjdk怎么执行java命令_Ubuntu 18.04 上使用 OpenJDK 安装并运行 Tomcat
  6. java删除xml文件中尖括号之外的内容
  7. sharepoint2010无法创建网站集
  8. OpenCV实现显著性检测中的谱残差法(Spectral Residual Method)涉及到了傅立叶正反变换
  9. Halcon之图像采集II
  10. FFMPEG,vlc介绍和视频直播,obs(zz)
  11. Mac宝藏软件推荐(笔者也在用)(一)
  12. MYSQL存储过程怎么写
  13. js计算当前时间的为年的第几周,以及周对应的时间范围
  14. 29、光敏电阻ADC输入实验
  15. 在html使用wow,让你的网页有点动画效果
  16. 下一跳—数据包的下一跳目的地址
  17. 卡尔曼滤波—Singer算法
  18. java nio io复用_java 非阻塞IO-java NIO-嗨客网
  19. IDL学习(对象):IDLffShape
  20. 748. 数组的右下半部分

热门文章

  1. C语言九十三之输入一个字符x,找到输入的那句话(字符串)里面一样字母的位置。
  2. Android(kotlin)之对一组图片数据更新最后的修改时间进行分类显示
  3. python之sys.argv获取命令行的参数
  4. C和指针之动态内存分配(读取范围在1和标准输入读取的size之前每个数据出现的次数)
  5. linux之使用md5sum命令比较两个文件是否一样
  6. 怎么查看ubuntu是多少位和常用信息
  7. Activity之launchMode:singleTop,singleTask与singleInstance
  8. Android之多线程----异步消息处理机制之Handler详解
  9. python编写请求参数带文件_转载:如何编写一个带命令行参数的Python文件
  10. 简述python解释器的作用_什么是python解释器?