传送门

题意:给出一些数字串,判断是否有一个数字串是另一个串的前缀。

这题真的可以算是Trie树的一道模板题了。

先把Trie树建好,建树的时候记录一个sum表示一个节点有多少个串会包含此节点,然后再记录一个end表示这个节点是不是一个串的结尾。

然后dfs/bfs遍历整个Trie树若一个节点x满足end[x]=true && sum[x]>=2则题目条件成立。

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
string s;
int trie[][];
int tot, sum[];
bool ennd[], ans;
void insert(string t) {
int p = ;
for (int i = ; i < (int)t.length(); i++) {
int k = t[i] - '';
sum[p]++;
if (!trie[p][k]) trie[p][k] = ++tot;
p = trie[p][k];
}
sum[p]++;
ennd[p] = ;
}
void dfs(int x) {
if (ennd[x] && sum[x] >= ) ans = ;
if (trie[x][]) {
dfs(trie[x][]);
}
if (trie[x][]) {
dfs(trie[x][]);
}
}
int case_num;
int main() {
while (cin >> s) {
case_num++;
if (s[] == '') continue;
ans = ;
tot = ;
memset(ennd, , sizeof(ennd));
memset(sum, , sizeof(sum));
memset(trie, , sizeof(trie));
insert(s);
while (cin >> s) {
if (s[] == '') break;
insert(s);
}
dfs();
if (ans) printf("Set %d is not immediately decodable\n", case_num);
else printf("Set %d is immediately decodable\n", case_num);
}
return ;
}

Immediate Decodability[UVA644](Trie入门)的更多相关文章

  1. poj1056 (Trie入门)寻找字符串前缀

    题意:给你一堆字符串,问是否满足对于任意两个字符串a.b,a不是b的前缀 字典树==前缀树==Trie树 trie入门题,只用到了insert和query操作 #include <cstdio& ...

  2. 「UVA644」 Immediate Decodability(Trie

    题意翻译 本题有多组数据.每组数据给出一列以"9"结尾的仅包含'0'和'1'的字符串,如果里面有一个是另一个的子串,输出"Set &case is not imm ...

  3. POJ 2001-Shortest Prefixes(Trie 入门)

    题意:给你一组串,求每个串在组中唯一标志的最短前缀 分析:保存树上经过各节点的单词个数,扫描每个串当经过节点单词个数是一(能唯一标志)结束 #include <map> #include ...

  4. poj 2001 Shortest Prefixes trie入门

    Shortest Prefixes 题意:输入不超过1000个字符串,每个字符串为小写字母,长度不超过20:之后输出每个字符串可以简写的最短前缀串: Sample Input carbohydrate ...

  5. hdu 1251 统计难题 trie入门

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

  6. POJ 1056 IMMEDIATE DECODABILITY 【Trie树】

    <题目链接> 题目大意:给你几段只包含0,1的序列,判断这几段序列中,是否存在至少一段序列是另一段序列的前缀. 解题分析: Trie树水题,只需要在每次插入字符串,并且在Trie树上创建节 ...

  7. Trie入门讲解

    我们常常用Trie(也叫前缀树)来保存字符串集合.如下图所示就是一个Trie. 上图表示的字符串集合为$\{a,to,tea,ted,ten,i,in,inn \}$,每个单词的结束位置对应一个“单词 ...

  8. Immediate Decodability UVA-644(qsort排序 + 模拟)

    #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> us ...

  9. UVA644 Immediate Decodability

    UVA644 Immediate Decodability Trie Trie模板题 难度几乎相等的题P2580 于是他错误的点名开始了 对于每组数据都清空树太浪费时间,所以我们只要在需要新点时预先把 ...

随机推荐

  1. 定义列表dl中标签 dt 与标签dd对齐方法,标签ul与标签li对齐

    不定义css样式时(默认情况): 代码如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8& ...

  2. 用myeclipse快速搭建hibernate实现数据库访问

    前言 hibernate使用的大致过程为引入jar包.配置主配置文件.配置映射文件.编写实体类.编写dao.但是每一步都需要知道的内容都相对不少,造成困难.如果使用myeclipse提供的支持将非常容 ...

  3. window下jenkins+allure+邮箱发送

    一.安装allure 1)下载 allure.zip 下载地址:allure-github: https://github.com/allure-framework/allure2 2)解压到本地目录 ...

  4. 在centos 7中安装phpmyadmin

    安装phpmyadmin数据库管理系统 //1.下载phpmyadmin包wget https://files.phpmyadmin.net/phpMyAdmin/4.7.0/phpMyAdmin-4 ...

  5. ubuntu16.04安装node.js、npm

    ubuntu16.04安装node.js.npm1.请尽量避免在 Ubuntu 上使用 apt-get 来安装 node.js, 如果你已经这么做了,请手动移除: sudo apt-get purge ...

  6. 【原】centos安装django

    一.更新系统软件包yum update -y 二.安装软件管理包和可能使用的依赖 yum -y groupinstall "Development tools" yum insta ...

  7. 「CF1313C Skyscrapers」

    题目大意 给出一个长度为 \(N\) 的序列 \(a\) 需要构造出一个长度为 \(N\) 的序列 \(h\) 使得 \(\forall i \in \{1,2,\ldots ,N\} h_i \le ...

  8. ES查询不重复的数据

    GET ana-apk/_search #查询不重复的mac地址{  "size": 10,  "aggs": {    "MAC": {  ...

  9. windows下mysql 8.0.12安装步骤及基本使用教程

    本文实例为大家分享了windows下mysql 8.0.12安装步骤及使用教程,供大家参考,具体内容如下 补充:mysql 已经更新到了 8.0.19,大致步骤和这个差不多,照着来就完事了. 我下载的 ...

  10. idea隐藏配置文件