HDU-1671 Phone List 暴力版 + 字典树
2011-09-03 22:28
393 查看
该题就是判定一个所给定串集中是否有某些串是另外一些串的前缀串的问题。字典树的话很好办只要判定在构建一个串的路径中是否已经有的节点被标记(此处有串结尾)和如果一个串在该处结尾,那么是否它的的孩子都为空。
这里写了一个暴力版,即现将所给定的所有数字用long long型存储起来,再按从小到大的顺序进行排序,之后再判定一个字符串以及它的依次去掉末位的子串是否已经存在,如果存在则输出NO,否则输出YES。在这里有一个如果不做一些处理的话是会WA的,那就是在每个数组之前加上一个1,这样使的串中的前导零有意义。
代码如下:
这里写了一个暴力版,即现将所给定的所有数字用long long型存储起来,再按从小到大的顺序进行排序,之后再判定一个字符串以及它的依次去掉末位的子串是否已经存在,如果存在则输出NO,否则输出YES。在这里有一个如果不做一些处理的话是会WA的,那就是在每个数组之前加上一个1,这样使的串中的前导零有意义。
代码如下:
#include <cstring> #include <cstdlib> #include <cstdio> #include <map> using namespace std; long long rec[10005]; void getstr( char *s ) { char c; int cnt = 1; while( c = getchar(), c < '0' || c > '9' ) ; s[cnt++] = c; while( c = getchar(), c != '\n' ) s[cnt++] = c; s[cnt] = '\0'; } void getlonglong( long long &x ) { x = 1; // 初始化为1 char c; while( c = getchar(), c < '0' || c > '9' ) ; x = x * 10 + c - '0'; while( c = getchar(), c >= '0' && c <= '9' ) x = x * 10 + c - '0'; } int cmp( const void *a, const void *b ) { return *( long long * )a - *( long long * )b; } int main() { int T; scanf( "%d", &T ); while( T-- ) { map<long long, bool>mp; int N, flag = 0; scanf( "%d", &N ); for( int i = 0; i < N; ++i ) { getlonglong( rec[i] ); } qsort( rec, N, sizeof( rec[0] ), cmp ); for( int i = 0; i < N; ++i ) { long long x = rec[i]; if( mp.count( x ) == 0 ) mp[x] = true; else { flag = 1; break; } x /= 10; while( x > 1 && !flag ) { if( mp.count( x ) == 0 ) { x /= 10; } else { flag = 1; break; } } } printf( flag ? "NO\n" : "YES\n" ); } return 0; }
相关文章推荐
- HDU 1671 Phone List 字典树
- hdu 1671 Phone List(字典树)
- Hdu 1671 Phone List 字典树+变形
- HDU 1671 Phone List(字典树Trie)
- HDU 1671 Phone List(字典树)
- hdu 1671-Phone List(字典树)
- hdu1671 Phone List (字典树)
- HDU 1671.Phone List【字典树】【5月15】
- hdu 1671 Phone List 字典树
- HDU 1671 Phone List (字典树+释放内存)
- hdu 1671 Phone List(字典树)
- [ACM] hdu 1671 Phone List (字典树)
- HDU 1671 Phone List 【字典树】
- POJ 3630/HDU 1671 Phone List(字典树)
- hdu 1671 Phone List(字典树)
- 【HDU】1671 - Phone List(字典树(动态建树))
- Hdu 1671 Phone List 字典树
- HDU 1305 Immediate Decodability HDU 1671 Phone List(字典树)
- hdu 1671 Phone List 字典树
- HDU 1671 Phone List(字典树)