**题意:**给出n条串判断是否存在一个串为另一个串的前缀。
**思路:**套Trie树的模板,先全部插入,再查找每个字串,如果查找字串完毕,但还存在下一个节点,说明存在前缀。

/** @Date    : 2016-11-09-20.09

* @Author : Lweleth (SoungEarlf@gmail.com)

* @Link : https://github.com/

* @Version :

*/

#include <stdio.h>

#include <iostream>

#include <string.h>

#include <algorithm>

#include <utility>

#include <vector>

#include <map>

#include <set>

#include <string>

#include <stack>

#include <queue>

#define LL long long

#define MMF(x) memset((x),0,sizeof(x))

#define MMI(x) memset((x), INF, sizeof(x))

using namespace std;



const int INF = 0x3f3f3f3f;

const int N = 1e5+20;



char a[10010][15];

struct yuu

{

int cnt;

int p;

int nxp[N][12];





int init()

{

memset(nxp[0], INF, sizeof(nxp[0]));//

cnt = 1;//

p = 0;

}



int idx(char a)

{

return a - '0';

}



void Insert(char *s)

{

int t = p;

int x = strlen(s);

for(int i = 0; i < x; i++)

{

int c = idx(s[i]);

if(nxp[t][c] == INF)

{

memset(nxp[cnt], INF, sizeof(nxp[cnt]));//注意此处初始化的是下一个下标所在的空间

nxp[t][c] = cnt;

//cout << cnt << endl;

cnt++;

}

t = nxp[t][c];//

}



}



int Find(char *s)

{

int t = p;

int x = strlen(s);

for(int i = 0; i < x; i++)

{

int c = idx(s[i]);

//cout << i << "~" << c <<endl;

if(nxp[t][c] == INF)

return 0;

t = nxp[t][c];

}

for(int i = 0; i < 10; i++)

{

if(nxp[t][i] != INF)

return 1;

}

return 0;

}



}tt;






int main()

{

int T;

int cnt = 0;

cin >> T;

while(T--)

{

int n;

scanf("%d", &n);

MMF(a);

tt.init();

for(int i = 0; i < n; i++)

{

scanf("%s", a[i]);

tt.Insert(a[i]);

}

int flag = 0;

for(int i = 0; i < n; i++)

{

if(tt.Find(a[i]))

{

flag = 1;

break;

}

}

if(!flag)

printf("Case %d: YES\n", ++cnt);

else printf("Case %d: NO\n", ++cnt);

}

return 0;

}

LightOJ 1129 - Consistency Checker Trie树模板的更多相关文章

  1. HDU 1251 Trie树模板题

    1.HDU 1251 统计难题  Trie树模板题,或者map 2.总结:用C++过了,G++就爆内存.. 题意:查找给定前缀的单词数量. #include<iostream> #incl ...

  2. Phone list(Trie树模板)

    Phone List 共t组数据,给定n个长度不超过10的字符串,问其中是否存在两个数S,T,使得S是T的前缀. 存在则输出NO,不存在输出YES 输入样例#1: 2 3 911 97625999 9 ...

  3. poj3630 Phone List (trie树模板题)

    Phone List Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 26328   Accepted: 7938 Descr ...

  4. HDU 1251 统计难题 (Trie树模板题)

    题目链接:点击打开链接 Problem Description Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单 ...

  5. Trie树模板1字符串统计

    Trie树模板1字符串统计 我们首先来了解一下字典树,首先看一下一张字典树的图片 字典树就是一个可以高效存储.查找字符串的树,比如上面这个字典树就是存储abc,acb,bac的字典树. 1.插入操作( ...

  6. hiho #1014 : Trie树(模板)

    Trie树 [题目链接]Trie树 &题意: 输入 输入的第一行为一个正整数n,表示词典的大小,其后n行,每一行一个单词(不保证是英文单词,也有可能是火星文单词哦),单词由不超过10个的小写英 ...

  7. Trie树模板2

    Trie数模板2 problem 这道题然后我们求最大异或对,我们很容易想出来 \(O(n^2)\) 的做法,两层循环遍历搞定 然后我们知道这样是肯定是肯定过不了的,我们考虑用字典树解决,然后我们来看 ...

  8. trie树模板(统计难题)

    统计难题 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131070/65535 K (Java/Others)Total Submi ...

  9. LightOJ 1269 - Consecutive Sum Trie树

    题意:给出一串序列,求区间连续异或值的最大和最小. 思路:如果不是出在专题里,想不到可以用字典树做.先求前缀异或值,转为二进制,加入Trie树中,如果要求最大,就是尽可能走和当前位数字相反的,这样异或 ...

随机推荐

  1. 2017秋-软件工程第四次作业(2)-结对使用TDD框架完成单元测试

    第一次接触“单元测试”这个要求,我和队友学习了一些示例后开始操作.如下展示一些建立单元测试的过程.Step1:右键单击[解决方案]->左键单击[添加(D)]->[新建项目(N)]. Ste ...

  2. Ubuntu 配置 Android 开发 环境

    . 果断换Ubuntu了, Ubuntu的截图效果不好, 不能设置阴影 ... 作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article ...

  3. 寒假学习计划——MOOC

    课程 西安交通大学[https://www.icourse163.org/course/XJTU-46006?tid=1002265006] 理由 本身中国大学mooc里c++课程不多,完结了能够有很 ...

  4. 《剑指offer》---输出链表倒数第k个结点

    本文算法使用python3实现 1 题目描述:   输入一个链表,输出该链表中倒数第k个结点.   时间限制:1s:空间限制:32768K 2 思路描述:   方法一:当链表长度为 $ n $ 时,输 ...

  5. 开发iOS百度地图大头针可以重复点击

    [self.mapView deselectAnnotation:view.annotation animated:YES];

  6. DataSet和List 泛型之间互相转换 (转载)

    //DataSet与泛型集合间的互相转换 //利用反射机制将DataTable的字段与自定义类型的公开属性互相赋值. //注意:从DataSet到IList<T>的转换,自定义类型的公开属 ...

  7. python 爬虫 糗百成人

    import urllib from time import sleep import requests from lxml import etree try: def all_links(url,p ...

  8. Android基础------通知栏

    前言:Android通知栏提示笔记 通知几乎是每一款app都拥有的功能 1.发送通知 发送一个通知栏必须用到两个类:  NotificationManager . Notification. Noti ...

  9. axios请求,拦截器的使用

    1. axios 创建请求 import axios from 'axios' import {Message} from 'element-ui' import router from " ...

  10. Android 常用dialog提示对话框

    在android应用程序中,经常需要用到dialog对话框让用户知道现在所在进行的操作(比如耗时的操作),或者提示某些信息和状态等,算是比较常用的一个知识点: 1.简单对话框 protected vo ...