该题就是判定一个所给定串集中是否有某些串是另外一些串的前缀串的问题。字典树的话很好办只要判定在构建一个串的路径中是否已经有的节点被标记(此处有串结尾)和如果一个串在该处结尾,那么是否它的的孩子都为空。

  这里写了一个暴力版,即现将所给定的所有数字用long long型存储起来,再按从小到大的顺序进行排序,之后再判定一个字符串以及它的依次去掉末位的子串是否已经存在,如果存在则输出NO,否则输出YES。在这里有一个如果不做一些处理的话是会WA的,那就是在每个数组之前加上一个1,这样使的串中的前导零有意义。

  代码如下:

 1 #include <cstring> 2 #include <cstdlib> 3 #include <cstdio> 4 #include <map> 5 using namespace std; 6  7 long long rec[10005]; 8  9 void getstr( char *s )10 {11     char c;12     int cnt = 1;13     while( c = getchar(), c < '0' || c > '9' ) ;14     s[cnt++] = c;15     while( c = getchar(), c != '\n' )16         s[cnt++] = c;17     s[cnt] = '\0';18 }19 20 void getlonglong( long long &x )21 {22     x = 1;  // 初始化为123     char c;24     while( c = getchar(), c < '0' || c > '9' ) ;25     x = x * 10 + c - '0';26     while( c = getchar(), c >= '0' && c <= '9' )27         x = x * 10 + c - '0';28 }29 30 int cmp( const void *a, const void *b )31 {32     return *( long long * )a - *( long long * )b;33 }34 35 int main()36 {37     int T;38     scanf( "%d", &T );39     while( T-- )40     {41         map<long long, bool>mp;42         int N, flag = 0;43         scanf( "%d", &N );44         for( int i = 0; i < N; ++i )45         {46             getlonglong( rec[i] );47         }48         qsort( rec, N, sizeof( rec[0] ), cmp );49         for( int i = 0; i < N; ++i )50         {51             long long x = rec[i];52             if( mp.count( x ) == 0 )53                 mp[x] = true;54             else55             {56                 flag = 1;57                 break;58             }59             x /= 10;60             while( x > 1 && !flag )61             {62                 if( mp.count( x ) == 0 )63                 {64                     x /= 10;65                 }66                 else67                 {68                     flag = 1;69                     break;70                 }71             }72         }73         printf( flag ? "NO\n" : "YES\n" );74     }75     return 0;76 }

  

转载于:https://www.cnblogs.com/Lyush/archive/2011/09/03/2165858.html

HDU-1671 Phone List 暴力版 + 字典树相关推荐

  1. [Leetcode][第336题][JAVA][回文对][暴力][HashSet][字典树]

    [问题描述][困难] [解答思路] 1. 暴力(超时) 时间复杂度:O(n 2 ×m),其中 n 是字符串的数量,m 是字符串的平均长度 空间复杂度:O(1) class Solution {publ ...

  2. HDU 5536 Chip Factory (01字典树)

    传送门:HDU 5536 题目大意: 在一个数组中找出 (s[i]+s[j])^s[k] 最大的值,其中 i.j.k 各不相同. 前至技能:01字典树详解. 思路: 01字典树模板可以解决查找与 x ...

  3. 【HDU - 1251 】统计难题(字典树,求拥有公共前缀的字符串数量)

    题干: Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本身也是自己的前缀). Input 输入数据 ...

  4. 【HDU】1305 Immediate Decodability(字典树:结构体数组,二维数组,链表/指针)

    一.用的二维数组 #include <iostream> #include <cstring> #include <algorithm> using namespa ...

  5. 【HDU】1251统计难题 (字典树:二维数组,结构体数组,链表,map)

    使用二维数组或者结构体数组都可以,但是在计数的时候有一点点小区别 一.结构体数组 #include <cstdio> #include <cstring> #include & ...

  6. 字典树,01字典树,可持续化01字典树(总结+例题)

    目录 字典树 01字典树 字典树例题: power oj 2390: 查单词 HDU 1671 Phone List HDU 1004Let the Balloon Rise HDU 1075 Wha ...

  7. 字典树andXOR*

    A.HDU 4825 你需要写一种数据结构: 往其中加入一个正整数: 找出一个正整数,使得该数与询问数的异或结果最大. \(n\le 10^5\) . 解 将数按二进制从高位到低位插入字典树. 查询时 ...

  8. 字典树哇 AC自动机哇 = _ =

    字典树哇 AC自动机哇 = _ = 例题 HDU 1251 统计难题 解题思路 : 字典树 原理:按照每个根向下发散 形成一棵 树 这个题 需要在每一个字母处都做统计 (求前缀单词) 开一个 二维数组 ...

  9. [ACM] hdu 1671 Phone List (字典树)

    [ACM] hdu 1671 Phone List (字典树) Phone List Problem Description Given a list of phone numbers, determ ...

最新文章

  1. python fabric使用
  2. 2021-01-16 英文写作中“因为”
  3. swoole 协程channel乱测
  4. 最小生成树(克鲁斯卡尔算法)
  5. kaggle数据挖掘竞赛Home Credit Default Risk讲解
  6. linux vim 终端 行首 行尾_不会vi/vim,看这一篇足矣
  7. html 标题栏小图标 ,锚点,视频插入,音乐插入
  8. python 3d重建_python三维重建
  9. 00003__爬拉勾网
  10. 360度全景VR摄像机初探
  11. 基于Visual Studio 2017的opengl安装
  12. 奇志思达-微网站前端规则建议
  13. 诛仙3网游:乾坤珠的获取与使用
  14. python下载图片被覆盖了怎么办_为什么我的图片下载并用python编写后会被破坏?...
  15. Unit 2: Linux/Unix Acquisition 2.1 Linux/Unix Acquistion Memory Acquisition
  16. linux 网络使用log,linux 网络命令last、lastlog、traceroute、netstat
  17. win10如何给已分区的磁盘(如C盘)进行扩容?
  18. 缺陷检测解决策略之三: 频域+空域
  19. 智慧安防解决方案-最新全套文件
  20. 利用DirectSound实现声卡录音【老毕改版】【Part1】

热门文章

  1. Mongo 用户创建及权限管理
  2. vim下如何去掉windows编辑的文件中的^M
  3. jQuery如何创建元素
  4. PHP5.3x被弃用的函数及代替方法
  5. Linux利用list_head结构实现双向链表
  6. 没有人愿意把自己放在被动的位置,一切皆是有原因的
  7. while循环(包含死循环、while嵌套)
  8. BM:我离开EOS的报道被夸大了 期待与社区合作
  9. 以太坊扩容项目 Arbitrum 放弃专利,即将上线主网
  10. SAP License:新总账