[Trie] Luogu P2580 于是他错误的点名开始了
题目描述
这之后校长任命你为特派探员,每天记录他的点名。校长会提供化学竞赛学生的人数和名单,而你需要告诉校长他有没有点错名。(为什么不直接不让他玩炉石。)
输入输出格式
输入格式:
第一行一个整数 n,表示班上人数。接下来 n 行,每行一个字符串表示其名字(互不相同,且只含小写字母,长度不超过 50)。第 n+2 行一个整数 m,表示教练报的名字。接下来 m 行,每行一个字符串表示教练报的名字(只含小写字母,且长度不超过 50)。
输出格式:
对于每个教练报的名字,输出一行。如果该名字正确且是第一次出现,输出“OK”,如果该名字错误,输出“WRONG”,如果该名字正确但不是第一次出现,输出“REPEAT”。(均不加引号)
输入输出样例
5 a b c ad acd 3 a a e
OK REPEAT WRONG
说明
对于 40%的数据,n≤1000,m≤2000;
对于 70%的数据,n≤10000,m≤20000;
对于 100%的数据, n≤10000,m≤100000。
题解
- 这题应该是比较裸的一棵trie
- 插入、搜索,再加多一个cnt统计有没有找过
代码
1 #include<cstdio> 2 #include<iostream> 3 #include<cstring> 4 using namespace std; 5 int n,m,v[800000],end[800000],tot,trie[800000][40]; 6 char ch[60]; 7 void insert(char *str) 8 { 9 int len=strlen(str),p=0; 10 for (int i=0;i<len;i++) 11 { 12 int ch=str[i]-'a'; 13 if (trie[p][ch]==0) trie[p][ch]=++tot; 14 p=trie[p][ch]; 15 } 16 end[p]=true; 17 } 18 void search(char *str) 19 { 20 int len=strlen(str),p=0; 21 for (int i=0;i<len;i++) 22 { 23 p=trie[p][str[i]-'a']; 24 if (p==0) 25 { 26 cout<<"WRONG"<<endl; 27 return; 28 } 29 } 30 if (end[p]==false) 31 { 32 cout<<"WRONG"<<endl; 33 return; 34 } 35 if (v[p]!=0) 36 { 37 cout<<"REPEAT"<<endl; 38 return; 39 } 40 if (v[p]==0) 41 { 42 cout<<"OK"<<endl; 43 v[p]=1; 44 } 45 46 } 47 int main() 48 { 49 scanf("%d",&n); 50 for (int i=1;i<=n;i++) 51 { 52 scanf("%s",ch); 53 insert(ch); 54 } 55 scanf("%d",&m); 56 for (int i=1;i<=m;i++) 57 { 58 scanf("%s",ch); 59 search(ch); 60 } 61 return 0; 62 }
转载于:https://www.cnblogs.com/Comfortable/p/8796424.html
[Trie] Luogu P2580 于是他错误的点名开始了相关推荐
- Luogu P2580 于是他错误的点名开始了 Trie树 字典树
字典树裸题.每次插入询问串,查询的时候拿出来直接查,信息保留在节点上. #include <bits/stdc++.h> using namespace std;char s[51]; i ...
- 字典树模板+洛谷P2580 于是他错误的点名开始了
题目: 题目背景 XS中学化学竞赛组教练是一个酷爱炉石的人. 他会一边搓炉石一边点名以至于有一天他连续点到了某个同学两次,然后正好被路过的校长发现了然后就是一顿欧拉欧拉欧拉(详情请见已结束比赛 CON ...
- P2580-于是他错误的点名开始了【Trie,字符串】
正题 评测记录:https://www.luogu.org/recordnew/lists?uid=52918&pid=P2580 题目大意 给n个字符串,用m个字符串和他们匹配,分为错误匹配 ...
- [Trie] Luogu P2992 [USACO08DEC]秘密消息Secret Message
题目描述 Bessie is leading the cows in an attempt to escape! To do this, the cows are sending secret bin ...
- 0x16.基本数据结构 — Trie树(字典树)+ A C 自 动 机
目录 用TrieTrieTrie树来处理整数异或问题是真的舒服! 一.TrieTrieTrie树 TrieTrieTrie的基本操作 0.初始化 1.插入 2.检索 二.TrieTrieTrie树例题 ...
- Trie (字典树,前缀树)
一,内容 (一),概念 详情可见:详解Trie 插入过程(insert) 对于一个单词,从根开始,沿着单词的各个字母所对应的树中的节点分支向下走,直到单词遍历完,将最后的节点进行标记 ...
- 【复习】CSP2021-模板
一. d p \rm dp dp 1. 01 01 01 背包 P1048 [NOIP2005 普及组] 采药 #include <iostream> #include <cstdi ...
- Trie(字典)树详解
什么是Trie(字典)树 顾名思义,这棵树和字典类似,通过百度我们又能知道Trie树是一种树形结构,是一种哈希树的变种.典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引 ...
- ACM入门之【字典树/Trie】
字典树,英文名 trie.顾名思义,就是一个像字典一样的树. 常用模板: const int N=1e5+10; //注意: N的大小是所有的字符串的总长度,因为最坏的情况下是一个字符就是一个结点 i ...
最新文章
- 五分钟让你了解 Java方法(或者叫函数)
- 微信小程序地图标记点,点击标记点显示详细信息源码加效果图
- RTP(Robi改造计划)--- 觉得还是搞风火轮(leg-wheel)好
- 静态移值编译的关键环境变量
- java double 的精度_Java Double的精度问题
- 【Elasticsearch】 es 搜索 返回信息 字段 解释
- 【图像处理】MATLAB:基本原理
- java性能调试命令_性能测试必备监控技能jvm之jdk命令行工具篇16
- [转载] pandas入门
- Swing组件集合的事件处理(三)
- Eclipse导入maven项目或项目组
- 华为5G产品大配套,火星人光电互联大科普
- Vue实现页面导航实战
- 一个简单光栅器的实现(五) 光栅化阶段
- 剪不断,理不乱——三层架构之抽象工厂加反射
- 应急响应 - Windows启动项分析,Windows计划任务分析,Windows服务分析
- fast-reid中的sbs
- Kali安装的一些常用软件
- Java爬虫爬取360doc个人图书馆
- matlab在时间序列分...,matlab在时间序列分析