qwq!为什么!木有非结构体非指针的题解怎么阔以!所以, 我来辽~咻咻咻~ 题面 来分析, 我们可以先建一棵树,来存储整个名单, 然后再判断

for (int i = 1; i <= n; i++) {root = 0;cin >> ch;int len = strlen (ch);for (int j = 0; j < len; j++) {int nu = ch[j] - 'a';if (!tr[root][nu]) tr[root][nu] = ++tot;root = tr[root][nu];}f[root] = 1;}

这一段代码是具体的存储的过程, f数组用来存储整个单词被用过几次。可以自己分析品味一哈, 这个root变量到最后存储的其实就是您目前存储的单词的最后一个字母, 也就是代表了这个单词的结束, 所以直接用root这个变量来表示这个单词被用过几次即可。

for (int j = 0; j < len; j++) {int nu = ch[j] - 'a';if (!tr[root][nu]) {printf ("WRONG\n");break;}root = tr[root][nu];if (j == len - 1 && f[root] == 2) printf ("REPEAT\n");if (j == len - 1 && f[root] == 1) f[root] = 2,printf ("OK\n"); }

查询, 根据题目意思, 按要求输出, 并且要注意换行, 大写之类的细节性问题。要注意, 每一次判断到最后的时候, 判断是否是被用过, 没有被用过的, 需要标记表示应经用过了

再就是root这个变量每次都要更新(我真的调了好久)

完整代码:

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
char ch[800000];
int n, m, tr[8000000][26], s, root, tot, f[8000000];
int main () {scanf ("%d", &n);for (int i = 1; i <= n; i++) {root = 0;cin >> ch;int len = strlen (ch);for (int j = 0; j < len; j++) {int nu = ch[j] - 'a';if (!tr[root][nu]) tr[root][nu] = ++tot;root = tr[root][nu];}f[root] = 1;}scanf ("%d", &m);for (int i = 1; i <= m; i++) {root = 0;cin >> ch;int len = strlen (ch);for (int j = 0; j < len; j++) {int nu = ch[j] - 'a';if (!tr[root][nu]) {printf ("WRONG\n");break;}root = tr[root][nu];if (j == len - 1 && f[root] == 2) printf ("REPEAT\n");if (j == len - 1 && f[root] == 1) f[root] = 2,printf ("OK\n"); }}return 0;
}

谢谢~

转载于:https://www.cnblogs.com/yanxiujie/p/11191685.html

洛谷P2580 于是他错误的点名开始了 题解相关推荐

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

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

  2. 洛谷入门1【顺序结构】题单题解

    目录 超级玛丽 字母转换 数字反转 再分肥皂水 小鱼的游泳时间 小学数学N合1 三角形面积 苹果和虫子 对角线 上学迟到 [入门1]顺序结构 - 题单 - 洛谷 | 计算机科学教育新生态 (luogu ...

  3. [Trie] Luogu P2580 于是他错误的点名开始了

    题目描述 这之后校长任命你为特派探员,每天记录他的点名.校长会提供化学竞赛学生的人数和名单,而你需要告诉校长他有没有点错名.(为什么不直接不让他玩炉石.) 输入输出格式 输入格式: 第一行一个整数 n ...

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

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

  5. 洛谷P2336 喵星球上的点名

    解:SAM + 线段树合并 + DFS序. 姓和名之间插入特殊字符,转化为下题: 给定串集合S,T,问S中每个串包含了T中的几个串?T中每个串被多少个S中的串包含? 解:对S建广义SAM,并线段树合并 ...

  6. 洛谷3384:【模板】树链剖分——题解

    https://www.luogu.org/problemnew/show/P3384 如题,已知一棵包含N个结点的树(连通且无环),每个节点上包含一个数值,需要支持以下操作: 操作1: 格式: 1 ...

  7. 洛谷 P3244 / loj 2115 [HNOI2015] 落忆枫音 题解【拓扑排序】【组合】【逆元】

    组合计数的一道好题.什么非主流题目 题目背景 (背景冗长请到题目页面查看) 题目描述 不妨假设枫叶上有 \(n​\) 个穴位,穴位的编号为 \(1\sim n​\).有若干条有向的脉络连接着这些穴位. ...

  8. 洛谷 P5713、P5719、P5730、P5737题 题解(Java语言描述)

    P5713 题目要求 P5713题目链接 AC代码(Java语言描述) import java.util.Scanner;public class Main {public static void m ...

  9. 大数高精加减乘除(洛谷P1601、P2142、P1303、P1480题题解,Java语言描述)

    写在前面 算法归算法,有现成的API能用为什么不用? (纯算法党别喷我,以后我再写高精算法的文) P1601 → A+B Problem 题目要求 P1601题目链接 AC代码(Java语言描述) i ...

  10. 洛谷P5733、P5734、P5735、P5739题题解(Java语言描述)

    P5733题目要求 P5733题目链接 P5733分析 toUpperCase()就行了-- P5733AC代码(Java语言描述) import java.util.Scanner;public c ...

最新文章

  1. CSS实现自适应浏览器宽度的正方形
  2. Error: No module named books
  3. Raspberry Pi 4B 开机自动运行Python文件
  4. 微软服务器无法删除不了,微软终于决定解决 “进程占用而无法删除某文件”的问题...
  5. QT udp自动获取对方ip和端口号
  6. 【Python】正负无穷
  7. OpenWindow.document.write();
  8. SRS(simple-rtmp-server)流媒体服务器源码分析--启动
  9. 3dmax模型转换为*.FLT格式的建模要点
  10. 计算机专业必备电子书单
  11. 卡顿、画面撕裂、延迟、晕眩为什么与帧率、刷新率有关
  12. html5 显示k线图,canvas绘图,html5 k线图,股票行情图
  13. 音符起始点检测(音频节奏检测)(5)
  14. Scala中的集合排序总结
  15. 计算机应用基础学习网站,《计算机应用基础》学习手册.pdf
  16. Chrome 无法显示网页 错误码:STATUS_INVALID_IMAGE_HASH
  17. pycharm安装与配置Pyqt5
  18. 单目标优化、多目标优化
  19. Batch Normalization(BN)超详细解析
  20. 11万字AI赋能智慧水利模型训练平台建设方案

热门文章

  1. 拓端tecdat|R语言多项式回归拟合非线性关系
  2. hibernate教程笔记4
  3. C语言模拟信号量解决同步、互斥问题
  4. 【C/C++】C++重复率最高、最经典面试题/笔试题【持续更新】
  5. C++ const,static,inline
  6. Linux ubuntu centos 文件目录是什么意思
  7. 日期范围选择类日历(增强版)
  8. php session失效
  9. php socket邮箱,phpsocket.io php版本的socket.io
  10. 树莓派 口罩识别 python_RaspberryPi上实现佩戴口罩识别——2020电赛F题小记