字典树模板+洛谷P2580 于是他错误的点名开始了
题目:
题目背景
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 于是他错误的点名开始了相关推荐
- hdu 1671 Phone List 字典树模板
Given a list of phone numbers, determine if it is consistent in the sense that no number is the pref ...
- Luogu P2580 于是他错误的点名开始了 Trie树 字典树
字典树裸题.每次插入询问串,查询的时候拿出来直接查,信息保留在节点上. #include <bits/stdc++.h> using namespace std;char s[51]; i ...
- Phone List POJ - 3630(字典树模板题)
题意 给定 n个长度不超过 10的数字串,问其中是否存在两个数字串S,T ,使得 S是 T的前缀,多组数据. 题目 Given a list of phone numbers, determine i ...
- Poj 2001 Shortest Prefix(字典树模板)
字典树入门题...... 只需在对应结点记录num值,找到num为1时的前缀,是唯一前缀(只是该单词的前缀),或者一直找找到该单词结尾. #include <iostream> #incl ...
- 字典树模板及讲解 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 ...
- 字典树基本介绍(字典树模板)
转载自:http://www.cnblogs.com/tanky_woo/archive/2010/09/24/1833717.html 字典树(讲解+模版) 又称单词查找树,Trie树,是一种树形结 ...
- 【模板】线段树 2 洛谷P3373
题目描述 如题,已知一个数列,你需要进行下面三种操作: 将某区间每一个数乘上 xx 将某区间每一个数加上 xx 求出某区间每一个数的和 输入格式 第一行包含三个整数 n,m,pn,m,p,分别表示该数 ...
- 支配树(洛谷-P5180)
题目描述 给定一张有向图,求从1号点出发,每个点能支配的点的个数(包括自己) 输入输出格式 输入格式: 第一行两个正整数n,mn,m,表示点数和边数 接下来mm行,每行输入两个整数u,vu,v,表示有 ...
- 线段树——最大数——洛谷——1198
这题可以说是模板题了. 只需要预先开好m大小的线段树,就好了,这就可以处理加点的问题. #include<iostream> #include<cstdio> #include ...
最新文章
- 宁波Uber优步司机奖励政策(1月18日~1月24日)
- 企业微信提示服务商未响应请求,将无法获取用户事件回调
- systemd管理mysql多实例_使用 systemd 配置多个 MySQL 8.0 实例
- HDU 1203 I NEED A OFFER!(01背包)
- openjdk怎么执行java命令_Ubuntu 18.04 上使用 OpenJDK 安装并运行 Tomcat
- java删除xml文件中尖括号之外的内容
- sharepoint2010无法创建网站集
- OpenCV实现显著性检测中的谱残差法(Spectral Residual Method)涉及到了傅立叶正反变换
- Halcon之图像采集II
- FFMPEG,vlc介绍和视频直播,obs(zz)
- Mac宝藏软件推荐(笔者也在用)(一)
- MYSQL存储过程怎么写
- js计算当前时间的为年的第几周,以及周对应的时间范围
- 29、光敏电阻ADC输入实验
- 在html使用wow,让你的网页有点动画效果
- 下一跳—数据包的下一跳目的地址
- 卡尔曼滤波—Singer算法
- java nio io复用_java 非阻塞IO-java NIO-嗨客网
- IDL学习(对象):IDLffShape
- 748. 数组的右下半部分
热门文章
- C语言九十三之输入一个字符x,找到输入的那句话(字符串)里面一样字母的位置。
- Android(kotlin)之对一组图片数据更新最后的修改时间进行分类显示
- python之sys.argv获取命令行的参数
- C和指针之动态内存分配(读取范围在1和标准输入读取的size之前每个数据出现的次数)
- linux之使用md5sum命令比较两个文件是否一样
- 怎么查看ubuntu是多少位和常用信息
- Activity之launchMode:singleTop,singleTask与singleInstance
- Android之多线程----异步消息处理机制之Handler详解
- python编写请求参数带文件_转载:如何编写一个带命令行参数的Python文件
- 简述python解释器的作用_什么是python解释器?