题目描述

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

输入输出格式

输入格式:

第一行一个整数 n,表示班上人数。接下来 n 行,每行一个字符串表示其名字(互不相同,且只含小写字母,长度不超过 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≤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 于是他错误的点名开始了相关推荐

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

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

  2. 字典树模板+洛谷P2580 于是他错误的点名开始了

    题目: 题目背景 XS中学化学竞赛组教练是一个酷爱炉石的人. 他会一边搓炉石一边点名以至于有一天他连续点到了某个同学两次,然后正好被路过的校长发现了然后就是一顿欧拉欧拉欧拉(详情请见已结束比赛 CON ...

  3. P2580-于是他错误的点名开始了【Trie,字符串】

    正题 评测记录:https://www.luogu.org/recordnew/lists?uid=52918&pid=P2580 题目大意 给n个字符串,用m个字符串和他们匹配,分为错误匹配 ...

  4. [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 ...

  5. 0x16.基本数据结构 — Trie树(字典树)+ A C 自 动 机

    目录 用TrieTrieTrie树来处理整数异或问题是真的舒服! 一.TrieTrieTrie树 TrieTrieTrie的基本操作 0.初始化 1.插入 2.检索 二.TrieTrieTrie树例题 ...

  6. Trie (字典树,前缀树)

    一,内容 (一),概念 详情可见:详解Trie 插入过程(insert)          对于一个单词,从根开始,沿着单词的各个字母所对应的树中的节点分支向下走,直到单词遍历完,将最后的节点进行标记 ...

  7. 【复习】CSP2021-模板

    一. d p \rm dp dp 1. 01 01 01 背包 P1048 [NOIP2005 普及组] 采药 #include <iostream> #include <cstdi ...

  8. Trie(字典)树详解

    什么是Trie(字典)树 顾名思义,这棵树和字典类似,通过百度我们又能知道Trie树是一种树形结构,是一种哈希树的变种.典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引 ...

  9. ACM入门之【字典树/Trie】

    字典树,英文名 trie.顾名思义,就是一个像字典一样的树. 常用模板: const int N=1e5+10; //注意: N的大小是所有的字符串的总长度,因为最坏的情况下是一个字符就是一个结点 i ...

最新文章

  1. 五分钟让你了解 Java方法(或者叫函数)
  2. 微信小程序地图标记点,点击标记点显示详细信息源码加效果图
  3. RTP(Robi改造计划)--- 觉得还是搞风火轮(leg-wheel)好
  4. 静态移值编译的关键环境变量
  5. java double 的精度_Java Double的精度问题
  6. 【Elasticsearch】 es 搜索 返回信息 字段 解释
  7. 【图像处理】MATLAB:基本原理
  8. java性能调试命令_性能测试必备监控技能jvm之jdk命令行工具篇16
  9. [转载] pandas入门
  10. Swing组件集合的事件处理(三)
  11. Eclipse导入maven项目或项目组
  12. 华为5G产品大配套,火星人光电互联大科普
  13. Vue实现页面导航实战
  14. 一个简单光栅器的实现(五) 光栅化阶段
  15. 剪不断,理不乱——三层架构之抽象工厂加反射
  16. 应急响应 - Windows启动项分析,Windows计划任务分析,Windows服务分析
  17. fast-reid中的sbs
  18. Kali安装的一些常用软件
  19. Java爬虫爬取360doc个人图书馆
  20. matlab在时间序列分...,matlab在时间序列分析

热门文章

  1. ARM Cortex-M3初探
  2. 字符串处理分割字符串
  3. SI 和 DI 寄存器的区别
  4. 输入有序数组返回下标
  5. 【一雪前耻!】两种方法判断大小端模式
  6. maven学习笔记之IDEA+Maven+Jetty运行一个简单的web项目
  7. Bit-Z为什么成为熊市之光?
  8. 如何在IPFS里面上传一张图片
  9. Ethereum Bootstrap 以太坊本地私有链开发环境搭建
  10. 【附代码】如何在私有链上编写、部署与以太坊进行交互的智能合约