洛谷P2580 于是他错误的点名开始了 题解
qwq!为什么!木有非结构体非指针的题解怎么阔以!所以, 我来辽~咻咻咻~ 题面 来分析, 我们可以先建一棵树,来存储整个名单, 然后再判断
for (int i = ; i <= n; i++) {
root = ;
cin >> ch;
int len = strlen (ch);
for (int j = ; j < len; j++) {
int nu = ch[j] - 'a';
if (!tr[root][nu]) tr[root][nu] = ++tot;
root = tr[root][nu];
}
f[root] = ;
}
这一段代码是具体的存储的过程, f数组用来存储整个单词被用过几次。可以自己分析品味一哈, 这个root变量到最后存储的其实就是您目前存储的单词的最后一个字母, 也就是代表了这个单词的结束, 所以直接用root这个变量来表示这个单词被用过几次即可。
for (int j = ; j < len; j++) {
int nu = ch[j] - 'a';
if (!tr[root][nu]) {
printf ("WRONG\n");
break;
}
root = tr[root][nu];
if (j == len - && f[root] == ) printf ("REPEAT\n");
if (j == len - && f[root] == ) f[root] = ,printf ("OK\n");
}
查询, 根据题目意思, 按要求输出, 并且要注意换行, 大写之类的细节性问题。要注意, 每一次判断到最后的时候, 判断是否是被用过, 没有被用过的, 需要标记表示应经用过了
再就是root这个变量每次都要更新(我真的调了好久)
完整代码:
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
char ch[];
int n, m, tr[][], s, root, tot, f[];
int main () {
scanf ("%d", &n);
for (int i = ; i <= n; i++) {
root = ;
cin >> ch;
int len = strlen (ch);
for (int j = ; j < len; j++) {
int nu = ch[j] - 'a';
if (!tr[root][nu]) tr[root][nu] = ++tot;
root = tr[root][nu];
}
f[root] = ;
}
scanf ("%d", &m);
for (int i = ; i <= m; i++) {
root = ;
cin >> ch;
int len = strlen (ch);
for (int j = ; j < len; j++) {
int nu = ch[j] - 'a';
if (!tr[root][nu]) {
printf ("WRONG\n");
break;
}
root = tr[root][nu];
if (j == len - && f[root] == ) printf ("REPEAT\n");
if (j == len - && f[root] == ) f[root] = ,printf ("OK\n");
}
}
return ;
}
谢谢~
洛谷P2580 于是他错误的点名开始了 题解的更多相关文章
- 洛谷 P2580 于是他错误的点名开始了 题解
每日一题 day10 打卡 Analysis trie树模板题,只需用到简单的插入和查询就好了 如果想要学trie树,见信息学奥赛一本通·提高篇P82 #include<iostream> ...
- [洛谷P2580]于是他错误的点名开始了
洛谷P2580的一个水题,用啥都能过,不过为了练习一下刚刚学会的字典树,还是认真做一下吧. #include <cstdio> #include <cstring> using ...
- [洛谷P2580]于是他错误的点名开始了(Trie树)
传送门 洛谷P2580的一个水题,用啥都能过,不过为了练习一下刚刚学会的字典树,还是认真做一下吧. #include <cstdio> #include <cstring> u ...
- 洛谷 P2580 于是他错误的点名开始了
题目背景 XS中学化学竞赛组教练是一个酷爱炉石的人. 他会一边搓炉石一边点名以至于有一天他连续点到了某个同学两次,然后正好被路过的校长发现了然后就是一顿欧拉欧拉欧拉(详情请见已结束比赛CON900). ...
- 洛谷—— P2580 于是他错误的点名开始了
https://www.luogu.org/problem/show?pid=2580 题目背景 XS中学化学竞赛组教练是一个酷爱炉石的人. 他会一边搓炉石一边点名以至于有一天他连续点到了某个同学两次 ...
- luogu P2580 于是他错误的点名开始了
luogu P2580 于是他错误的点名开始了 https://www.luogu.org/problem/show?pid=2580 题目背景 XS中学化学竞赛组教练是一个酷爱炉石的人. 他会一边 ...
- P2580 于是他错误的点名开始了(trie)
P2580 于是他错误的点名开始了 题目背景 XS中学化学竞赛组教练是一个酷爱炉石的人. 他会一边搓炉石一边点名以至于有一天他连续点到了某个同学两次,然后正好被路过的校长发现了然后就是一顿欧拉欧拉欧拉 ...
- 洛谷P4014 分配问题【最小/大费用流】题解+AC代码
洛谷P4014 分配问题[最小/大费用流]题解+AC代码 题目描述 有 n 件工作要分配给 n 个人做.第 i 个人做第 j 件工作产生的效益为c ij. 试设计一个将 n 件工作分配给 n 个人做的 ...
- 洛谷 P4016负载平衡问题【费用流】题解+AC代码
洛谷 P4016负载平衡问题 P4014 分配问题[费用流]题解+AC代码 负载平衡问题 题目描述 GG 公司有n个沿铁路运输线环形排列的仓库,每个仓库存储的货物数量不等.如何用最少搬运量可以使 n ...
随机推荐
- 能写数据后台,需要掌握哪些进阶的sql语句?
国庆假期花了一些时间,首次尝试并玩转 grafana,这几天继续不断优化和完善,如今看着自己的成果,相当满意.--逐步接近我想要的理想后台啦. 需求是不停歇的.今天我又给自己发掘了一些新需求,比如变量 ...
- 我的第一个netcore2.2 api项目搭建(二)
上一章快速使用SqlSugar搭建了netcore api项目,我的第一个netcore2.2 api项目搭建(一) 这一章实现目标二:api使用Swagger,实现api文档管理 效果图:第一张收缩 ...
- Django的安全攻击
目录 Django的安全攻击 XSS XSS(跨站脚本攻击) 危害 原理 防护 csrf(Cross Site Request Forgery) csrf(跨站域请求伪造) 过程 Django 提供的 ...
- Axios 各种请求方式传递参数(非axios api 请求方式)
get delete 方法较为不同 get请求方式将需要入参的数据作为 params 属性的值,最后整体作为参数传递 delete请求方式将将需要入参的数据作为 data 属性的值,最后整体作为参数传 ...
- CSS 初识
一.CSS 发展历程 从HTML被发明开始,样式就以各种形式存在.不同的浏览器结合它们各自的样式语言为用户提供页面效果的控制.最初的HTML只包含很少的显示属性. 随着HTML的成长,为了满足页面设计 ...
- MYSQL入门这一篇就够了
安装概述 分为5.6与,5.7版本,5.7的安装与5.6略有不同,因为依赖BOOST库,下面给出2个版本的安装脚本,直接运行即可 Mysql 5.6 [root@Tuiliu ~]# cat mysq ...
- 关于logback日志级别的配置
logback如果需要灵活的配置日志级别,需要结合过滤器,<filter></fiter>这个标签.需要注意的是,过滤器过滤的基础是在root标签的配置基础上进行的. 过滤器可 ...
- Java httpclent请求httpclentUtils工具类
第一种写法: import java.io.IOException; import java.io.InterruptedIOException; import java.io.Unsupported ...
- phpstorm通过FileWatchers配置自动格式化代码插件
在自动格式代码的插件中, prettier一直是挺不错的, 这个插件在不同的IDE里有不同的配置地方, 但是配置参数基本上是差不多的. 下面就说明下在phpstorm(版本2019.2)中如何配置的吧 ...
- 怎么查看一个进程里fork多少个子进程
怎么查看一个进程里fork多少个子进程 怎么查看一个进程里fork多少个子进程 怎么查看一个进程里fork多少个子进程 ? ? ?