zoukankan      html  css  js  c++  java
  • HDU1671 Phone List 暴力版 + 字典树

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

      这里写了一个暴力版,即现将所给定的所有数字用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; // 初始化为1
    23 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 else
    55 {
    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 else
    67 {
    68 flag = 1;
    69 break;
    70 }
    71 }
    72 }
    73 printf( flag ? "NO\n" : "YES\n" );
    74 }
    75 return 0;
    76 }

      

  • 相关阅读:
    error LNK2019: 无法解析的外部符号 该符号在函数 中被引用 解决方案
    【OSG】运行OSG示例出现的奶牛不完整问题
    python 遍历文件夹
    python os操作
    python io操作
    python request 代理/超时/证书
    python tuple
    python dict
    python request post
    python request get
  • 原文地址:https://www.cnblogs.com/Lyush/p/2165858.html
Copyright © 2011-2022 走看看