POJ【3630】Phone List

poj3630 Phone List与Trie 题目: 9:电话号码 查看提交统计提问 总时间限制: 1000ms 内存限制: 65536kB 描述 给你一些电话号码,请判断它们是否是一致的,即是否有某个电话是另一个电话的前缀。比如: Emergency 911 Alice 97 625 999 Bob 91 12 54 26 在这个例子中,我们不可能拨通Bob的电话,因为E 阅读详情
Phone List
Time Limit: 1000MS        Memory Limit: 65536K
Total Submissions: 26462        Accepted: 7976

Description

Given a list of phone numbers, determine if it is consistent in the sense that no number is the prefix of another. Let's say the phone catalogue listed these numbers:

    Emergency 911
    Alice 97 625 999
    Bob 91 12 54 26

In this case, it's not possible to call Bob, because the central would direct your call to the emergency line as soon as you had dialled the first three digits of Bob's phone number. So this list would not be consistent.

Input

The first line of input gives a single integer, 1 ≤ t ≤ 40, the number of test cases. Each test case starts with n, the number of phone numbers, on a separate line, 1 ≤ n ≤ 10000. Then follows n lines with one unique phone number on each line. A phone number is a sequence of at most ten digits.

Output

For each test case, output "YES" if the list is consistent, or "NO" otherwise.

Sample Input

2
3
911
97625999
91125426
5
113
12340
123440
12345
98346

Sample Output

NO
YES



题意即给定n个字符串,如果任意一个是另一个的前缀则输出NO,否则输出YES

可以用字典树实现,很明显只有短的字符串可能是长的字符串的前缀,如果我们把所有字符串从短到长排序,然后依次加入字典树中,并且把最后一个字母的flag标记为1,那么如果下面的字符串经过flag=1的点,说明满足“任意一个是另一个的前缀”这一条件,反之如果最后还是没有到达,那么不满足,代码如下:


#include<iostream>
#include<string.h>
#include<stdio.h>
#include<algorithm>
using namespace std;
struct node{
    int chi[26];
    void init()//清零函数
    {
        for (int w=0;w<=25;w++)
        chi[w]=0;
    }
};//给字典树定义的结构体,chi【26】代表每个父亲节点下的子节点,因为有多组数据,必须更新,init用于更新
struct forstr{int l;char s[20];};//用于给字符串排序
forstr qq[10004];
node tre[100000];//树
int flag[100004];
int tot=0;//tot是编号
int cmp(forstr aa,forstr bb)
{
return aa.l<bb.l;
}
int add(char s[])
{
    int now=0;
    int l=strlen(s);
    for (int i=0;i<l;i++)
    {
        int tmp=s[i]-'0';
        if (tre[now].chi[tmp]!=0)//如果下一个点已经编号
        {
            if (flag[tre[now].chi[tmp]]!=0)//如果下一个节点已经编号并且flag为1,说明满足条件
            {
                return 1;
            }
            if (i==l-1)     flag[tre[now].chi[tmp]]=1; //如果这个字符已经是最后,修改flag

            now=tre[now].chi[tmp];//更新到下一个点
            continue;
        }
        else //反之如果下一个点,没有编号,那么给下一个点编号
        {
            tot++;
            tre[now].chi[tmp]=tot;
            flag[tot]=0;
            tre[tot].init();//多组数据下必须更新,一组数据不用
            now=tre[now].chi[tmp];
            if (i==l-1)     flag[tot]=1;//如果这个字符已经是最后,修改flag
        }
    }
    //cout<<flag[1]<<flag[2]<<flag[3]<<endl;
    return 0;
}






int main()
{
    int n;
    cin>>n;
    int m;
    for (int i=1;i<=n;i++)
        {
        cin>>m;
        for (int j=1;j<=m;j++)
            {
            scanf("%s",&qq[j].s);//读入必须用scanf,否则TLX
                    //PS:日后还要多用char数组啊,string改char,差点没气了
            qq[j].l=strlen(qq[j].s);//这个函数很慢,而且是在循环里,其实也可以不排序直接建树,不影响
            }
        tot=0;
        memset(flag,0,sizeof(flag));

                tre[0].init();//记得初始化,特别是这一句

        sort(qq+1,qq+1+m,cmp);
                int f=0;
        for (int j=1;j<=m;j++)
                     if (add(qq[j].s)==1)
                {
                cout<<"NO"<<endl;
                f=1;
                break;
                }
        if (f==1) continue;
        cout<<"YES"<<endl;//注意输出格式,T×D没有文末endl竟然presentation wrong(答案正确,输出错误),shit
    
        }
    return 0;
}


最后感谢同学DERIT的帮助,他的微博上有很多经典题目,http://blog.youkuaiyun.com/deritt/article/details/50041863,去看看吧


E5071C 网络分析仪使用指南 E5071C 网络分析仪是 Keysight(原 Agilent)推出的一款高性能矢量网络分析仪,广泛应用于射频(RF)和微波(MW)电路设计、天线测试、滤波器优化等领域。它以高精度、宽频率范围(9 kHz–20 GHz)、出色的动态范围和灵活的测量功能著称。本文将详细介绍 E5071C 的基本操作方法,帮助用户快速上手并高效使用该设备。 阅读详情

相关推荐

Windows下玩转DeepSeek-R1:Ollama+Docker配置RAGFlow的3种网络调试方案

本文详细介绍了在Windows环境下使用Ollama和Docker配置RAGFlow的三种网络调试方案,帮助开发者解决本地部署AI知识库系统时的网络隔离问题。通过host.docker.internal直连、自定义Docker网桥网络和端口映射与反向代理三种方法,实现DeepSeek-R1模型与RAGFlow的高效通信,提升本地AI应用的开发效率。

weixin_28347369的博客 247

POJ - 3630 Phone List(字典树)

题目链接:点击查看 题目大意:给出n个电话号码,问是否都能拨通,拨通的定义是不会存在一个电话号码是另一个电话号码的前缀 题目分析:因为涉及到了前缀,所以我们可以直接套字典树的板子上去,按照题意插入一遍然后再判断一遍前缀就好了,模板题,直接上代码了: 对了,多组输入,记得每次都初始化 #include<iostream> #include<cstdlib> #inc...

Falcon的博客 568

Seurat3.0小提琴图腰围的参数

小提琴图没有有些群没有出现小提琴只有点点,是由于0值比例太多, 一个关键的参数scale = "width"导致了这种局面,应加上上述参数 ggplot(p$data,aes(ident,CD4)) + geom_violin(scale = "width", adjust =1, trim = TRUE) + geom_jitter()+ theme_bw() adjust参数可以调整腰的粗细,eg: ggplot(p$data,aes(ident,CD4)) + geom_violin(scale

Demomwu的博客 1661

POJ 3630 Phone List(字典树)

题意:检查是否有某一串数字与其他数字的前缀相同。从而打错电话。 题记:先把所有数字字符串存入字典树中,id[p]记录这个字符串的编号,然后第二次将所有字符串存入字典树(相当于检查一次)。 #include<iostream> #include<cstring> #include<string> using namespace std; #define F first #define S second #define lowbit(x) ((x)&-(x)) #de

moyangxian 232

《遥感大模型生产级实战:从数据到决策的端到端AI工程》系列第三部分:城市洪涝灾害应急响应与评估平台实战-文章 14:项目二启动与多源异构数据对齐

我们将系统性地梳理城市洪涝场景下的所有关键数据源,从天上的卫星(光学与SAR)、空中的无人机,到地面的物联网传感器和社交媒体信息流,深入剖析每种数据在洪涝响应中的独特价值、获取方式与内在局限性。本章的核心将是一个详尽的、生产级的数据对齐技术全景,我们将分步解决三大核心对齐难题:空间对齐(将所有数据投影到统一的地理坐标系)、时间对齐(处理不同采样频率的时间序列)以及最困难的语义对齐(将文本描述与物理观测相关联)。

panshengwu的博客 2003

AI Agent在智能投研中的实战:多智能体信息整合与策略生成

那么,什么是AI Agent?简单来说,AI Agent是一种能够感知环境、做出决策并采取行动的自主系统。自主性:能够在没有人类直接干预的情况下运行,对自己的行为和内部状态有一定的控制权。反应性:能够感知环境的变化,并及时做出反应。主动性:不仅能够对环境变化做出反应,还能够主动地设定目标并采取行动实现这些目标。社会性:能够与其他Agent(包括人类和人工智能)进行交互、协作和竞争。它们可以全天候不间断地监控和处理海量信息,大大提升信息处理能力;

AI大模型应用之禅 188

poj 3630 Phone List (字典树 +静态字典树)

Phone List Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 22235   Accepted: 6885 Description Given a list of phone numbers, determine if it is consistent in

Just do it ! 2232

R | 提取文件夹内栅格数据的最小值、最大值、标准差和平均值

各位同学好,我们长需要用长时间序列栅格数据的平均值做变量的时间变化分析,用代码能够帮助我们省下很多时间。

qq_48539301的博客 449

POJ 3630 Phone List (字典树)

Phone List Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 27078   Accepted: 8146 Description Given a list of phone numbers, determine if it is consistent in

MADE_Y 419

深入剖析 Wenet 下 AISHELL-1 的 run.sh 脚本:从数据准备到模型训练

run.sh脚本用于处理 AISHELL-1 数据集的整个训练和测试流程。我们将逐步分析脚本中的每个部分,包括环境变量、参数设置、各个阶段的执行等。stage: 设置脚本的起始阶段(如数据准备)。stop_stage: 设置脚本的结束阶段。通过对 Wenet 下 AISHELL-1 的run.sh脚本的详细剖析,我们希望你能更好地理解每个步骤的功能及其背后的原理。此脚本不仅为模型训练提供了便利,也为用户自定义和扩展训练流程提供了基础。希望本教程能帮助你顺利完成语音识别项目!

帅小柏的博客 1632

深入浅出块I/O子系统(四)请求处理过程

BIO请求处理的流程 函数scsi_request_fn()代码(摘自文件drivers/scsi/scsi_lib.c) (1)static void scsi_request_fn(struct request_queue *q) (2)int scsi_dispatch_cmd(struct scsi_cmnd *cmd) { host->hostt->queuecommand(host, cmd) } (3)struct sas_internal *i sas_queuec

sinat_37817094的博客 1347

HDOJ 1671 Phone List

Description Given a list of phone numbers, determine if it is consistent in the sense that no number is the prefix of another. Let's say the phone catalogue listed these numbers: ...

205

034、MLCA 多尺度局部上下文注意力的 YOLOv11 适配:轻量级金字塔式空间上下文聚合

本文介绍了一种将多尺度局部上下文注意力(MLCA)模块集成到YOLOv11模型中的方法,以解决小目标检测中空间信息丢失的问题。MLCA采用金字塔式局部上下文聚合策略,通过不重叠的网格划分实现轻量级空间注意力计算,相比全局注意力机制能更好地保留小目标特征。 作者详细记录了实现过程,包括模块定义、参数调优和训练技巧,特别指出避免使用BN而改用GroupNorm以提升训练稳定性。在VisDrone数据集上的实验表明,MLCA-YOLOv11在参数量和计算量基本不变的情况下,mAP提升2.5%,其中行人检测提升3.

sundong_81的博客 278

POJ 3630 Phone List 已被翻译

woniupengpeng的专栏 292

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

[POJ 3630] Phone List

[POJ 3630] Phone List 题目链接:http://poj.org/problem?id=3630 问题描述:给你n个电话号码(都是字符串形式),目前有 t 组数据, n 个电话号码,如果拨打号码的时候 先拨通了某个号码,那么这一串号码就无法全部拨通,(eg:911 和 9112016652 相比 后者就无法被拨通,因为 911 会...

Youpeng 189

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

POJ3630——Phone List【字典树】

poj_3630 题目大意:给你一组字符串,让你判断这其中的某一个字符串是不是其他字符串的前缀,如果是输出NO,否则输出YES。 大致思路:这道题我们可以用字典树来做,在每一个字符串后面一个节点加一个标记,标记一下这个字符串已经存在了。在字符串输入的时候判断一下其前缀是否已经出现了。 #include &lt;algorithm&gt; #include &lt;cstdio&gt; #i...

xiang_hehe的博客 300

POJ-3630 Phone List 字典树

写了个三叉的字典树,找了个题测试了一下,

Gikieng的奋斗路 980

poj3630 Phone List

Trie树

AaronPolaris 1955

poj 3630 Phone List

//竟然用sort排序之后的做法比trie还要快!应该我对trie的掌握还不够熟练吧! #include #include #include using namespace std; int main() { int tc, i, n; string str[10010]; bool flag; cin >> tc; while (tc--){

yzl_rex 1123

POJ 3630 Phone List

题目链接:http://poj.org/problem?id=3630 题意:给一些字符串,问这些字符串是否存在一个字符串是另一个字符串前缀的情况。 思路:trie树解决字符串前缀问题。 我们把每个单词x加入trie树的时候考虑两种情况: (1) 是否存在已加进去的单词y是x的前缀。 (2) 是否存在已加进去的单词y,x是y的前缀。 我们对每个单词的结尾字母节点进行标记。

DS-K的博客 362

POJ3630 Phone List Trie树

题目链接 http://poj.org/problem?id=3630 分析 Trie树,插入时可顺便检查是否经过了终止节点,另外插入完当前字符串后还要检查其终止节点是否有儿子,可能当前字符串是之前某个字符串的前缀。 AC代码 #include <cstdio> #include <cstring> inline int read() { int num = 0; c...

Kevin的博客 222

POJ3630 Phone List

本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作。 本文作者:ljh2000作者博客:http://www.cnblogs.com/ljh2000-jump/转载请注明出处,侵权必究,保留最终解释权! Description Given a list of phone numbers, determine if...

dgoh41514的博客 146

Phone List[POJ3630]

题面描述 描述 给你一些电话号码,请判断它们是否是一致的,即是否有某个电话是另一个电话的前缀。比如: Emergency 911 Alice 97 625 999 Bob 91 12 54 26 在这个例子中,我们不可能拨通BobBobBob的电话,因为EmergencyEmergencyEmergency的电话是它的前缀,当拨打BobBobBob的电话时会先接通EmergencyEmergenc...

lb2003 1632

POJ - 3630 Phone List

Description Given a list of phone numbers, determine if it is consistent in the sense that no number is the prefix of another. Let's say the phone catalogue listed these numbers: Emergency 911 Ali...

一定要站在自己热爱的生活里闪闪发光 3万+

POJ - 3630 Phone List (字典树)

POJ - 3630 Phone List (字典树) Given a list of phone numbers, determine if it is consistent in the sense that no number is the prefix of another. Let’s say the phone catalogue listed these numbers: Emerg...

weixin_43179892的博客 244
上一篇: AC自动机
下一篇: POJ - 2406 Power Strings
WilliamCode
博客等级 码龄11年 118粉丝 105原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值