Phone List

news/2024/5/19 0:38:29

题目描述

输入格式

输出格式

样例

样例输入

2
3
911
97625999
91125426
5
113
12340
123440
12345
98346

样例输出

NO
YES

数据范围与提示

这道题的三条判断是否存在前缀的标准:

  1. 当在建树字符串已经到结尾时,如果该点有结束标记,那肯定是前缀(不是真前缀

  2. 当在建树字符串已经到结尾时,如果该点还有子节点,那也是前缀

  3. 当在建树过程中经过了某个结束标记,表明存在前缀(此时之前的某个字符串是当前插入的字符串的前缀)

  • 我觉得这道题最巧妙的地方就是不是在search里面判断而是变插变在insert里面判断

  • 在插入时一定要从0开始遍历,不然就会像我一样一直WA

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e4+10;
int t,n,trie[maxn*12][12],tot;
bool ed[maxn*12];
string a;
bool insert(const string &b)
{int len=b.length(),p=1;bool flag=0;for (int i=0;i<len;i++){int ch=b[i]-'0';if (!trie[p][ch]) trie[p][ch]=++tot;else if (i==len-1) //结尾已经有点 flag=1;p=trie[p][ch];if (ed[p])//经过了结束标记 flag=1;}ed[p]=1;return flag;
}
int main()
{scanf("%d",&t);while (t--){tot=1;bool x=0;scanf("%d",&n);memset(trie,0,sizeof(trie));memset(ed,0,sizeof(ed));for (int i=1;i<=n;i++) {cin>>a;if (insert(a)) x=1;}if (x) printf("NO\n");else printf("YES\n");}return 0;
}

完结撒花!o( ̄▽ ̄)ブ

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hjln.cn/news/28223.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

SSM教务管理系统设计与实现(附源码下载地址)

@目录01 项目背景02 使用技术03 运行环境04 功能分析05 数据库设计06 项目工程结构07 部分功能展示及源码7.1 登录页7.2 管理员端--首页7.3 管理员端--课程管理7.4 管理员端--学生管理7.5 教师端--首页7.6 教师端--个人信息7.7 学生端--已修课程7.8 学生端--公告管理08 运行教程…

AutoCAD C# 两不平行直线倒圆弧算法

参考的博客:https://www.cnblogs.com/JJBox/p/14300098.html 下面是计算示例主要计算代码:var peo = new PromptEntityOptions("选择直线1"){AllowNone = false,AllowObjectOnLockedLayer = false};peo.SetRejectMessage("请选择直线Line");peo.AddAllow…

挖矿流量分析之Stratum挖矿协议

目录前言区块链和挖矿相关概念挖矿木马挖矿协议StratumStratum工作过程 前言 之前做了一个关于“挖矿行为检测”的大创训练项目,在这里记录一下我关于挖矿检测相关内容的学习。 区块链和挖矿相关概念 区块链 首先需要了解一些关于区块链的内容。注意,区块链和挖矿是两个紧密相…

sublime设置默认打开侧边栏(失败)

描述 每次使用sublime打开某个目录,总是不显示侧边栏,还得手动打开。 过程 在设置里找了半天似乎没有这个选项,有点离谱,网上搜到的全是手动打开侧边栏。看来只能Ctrl+KB按得勤快些了。// Display the toggle sidebar button in the status bar"show_sidebar_button&q…

C++模板

C++模板 C++是一个面向对象编程的语言,提供了类的继承和组合机制,虽然在层次结构上很简单,但使用起来非常糟糕。C++使用关键字template,告诉编译器声明的类或者对象是一个模板。模板不是像继承和组合那样重用目标代码,而是重用源代码。容器不再包含名为 Object 的泛型基类…

Matlab安装教程(Linux)

解压安装包 在虚拟机中,文件直接通过拖拽文件的方式将安装包拉入虚拟机时,文件通常存放在/tmp/VMwareDnD中,因此需要将存放文件位置的文件转移到/home/<用户名>/<存放目录>中 参考命令如下: mv /tmp/VMwareDnD/<文件存放目录>/* /home/<用户名>/&l…

2. 基础配置

1. 配置文件格式 1.1 配置文件自动提示功能消失解决方案 ​​ 1.2 SpringBoot配置文件加载顺序(了解) application.properties > application.yml > application.yaml 1.3 注意事项 SpringBoot核心配置文件名为application SpringBoot内置属性过多,且所有属性集中…

Qt/C++音视频开发72-倍速推流/音视频同步倍速推流/不改变帧率和采样率/低倍速和高倍速

一、前言 最近多了个新需求,需要倍速推流,推流界的扛把子obs也有倍速推流功能,最高支持到两倍速。这里所说的倍速,当然只限定在文件,只有文件才可能有倍速功能,因为也只有文件才能倍速解码播放。实时视频流是不可能倍速的,因为没有时长,有时长的才可以按照播放进度来。…