传送门

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

这题真的可以算是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. Move-to-front(MTF) and Run-lenght encoding(RLE) algorithms

    mtf算法(关于该算法:https://www2.cs.duke.edu/csed/algoprobs/beta/bw1.html): #include <stdio.h> #includ ...

  2. 计算机二级-C语言-程序设计题-190112记录-结构体的遍历和结构体的数据的交换处理,文件的操作。

    //程序设计题:学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把分数低的学生数据放在b所指的数组中,注意:分数最低的学生可能不止一个,函数返回 ...

  3. 今天启动项目的时候报了一个错MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk.

    从报错信息看应该是内存问题导致不能持久化到硬盘,在网上找到了一个解决方法: Redis被配置为保存数据库快照,但它目前不能持久化到硬盘.用来修改集合数据的命令不能用.请查看Redis日志的详细错误信息 ...

  4. Codeforces Round #576 (Div. 2) 题解

    比赛链接:https://codeforc.es/contest/1199 A. City Day 题意:给出一个数列,和俩个整数\(x,y\),要求找到序号最靠前的数字\(d\),使得\(d\)满足 ...

  5. 《JavaScript高级程序设计》读书笔记(四)变量、作用域和内存问题

    内容---理解基本类型和引用类型的值---理解执行环境---理解垃圾收集 --JavaScript变量松散类型的本质--决定了它只是在特定时间用于保存特定值的一个名字而已--变量的值及其数据类型可以在 ...

  6. spring 参数校验

    1.了解下资源文件加载 MessageSource   需要国际化处理时使用这个类 (在需要处理国际化的地方使用messageSource.getMessage(this.getResponseCod ...

  7. python opencv:绘图 基本图形

    参数说明 • img:你想要绘制图形的那幅图像. • color:形状的颜色.以 RGB 为例,需要传入一个元组,例如:( 255,0,0)代表蓝色.对于灰度图只需要传入灰度值. • thicknes ...

  8. PyQt5操作SQLite数据库

    1.操作SQLite数据库import sysfrom PyQt5.QtSql import QSqlDatabase,QSqlQueryfrom PyQt5.QtCore import * def ...

  9. PyQt5中Web操作与多线程定时器

    1.装载外部网页页面'''用web浏览器控件QWebEngineView控件显示网页PyQt5和Web的交互技术 同时使用python和Web开发程序,混合开发 Python+JavaScript+H ...

  10. WinForm开发(5)——DataGridView控件(3)——DataGridView控件操作

    一.禁止用户改变DataGridView的列宽.行高.列头高度 1.// 禁止用户改变DataGridView1的所有列的列宽 DataGridView1.AllowUserToResizeColum ...