Immediate Decodability[UVA644](Trie入门)
题意:给出一些数字串,判断是否有一个数字串是另一个串的前缀。
这题真的可以算是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入门)的更多相关文章
- poj1056 (Trie入门)寻找字符串前缀
题意:给你一堆字符串,问是否满足对于任意两个字符串a.b,a不是b的前缀 字典树==前缀树==Trie树 trie入门题,只用到了insert和query操作 #include <cstdio& ...
- 「UVA644」 Immediate Decodability(Trie
题意翻译 本题有多组数据.每组数据给出一列以"9"结尾的仅包含'0'和'1'的字符串,如果里面有一个是另一个的子串,输出"Set &case is not imm ...
- POJ 2001-Shortest Prefixes(Trie 入门)
题意:给你一组串,求每个串在组中唯一标志的最短前缀 分析:保存树上经过各节点的单词个数,扫描每个串当经过节点单词个数是一(能唯一标志)结束 #include <map> #include ...
- poj 2001 Shortest Prefixes trie入门
Shortest Prefixes 题意:输入不超过1000个字符串,每个字符串为小写字母,长度不超过20:之后输出每个字符串可以简写的最短前缀串: Sample Input carbohydrate ...
- hdu 1251 统计难题 trie入门
统计难题 Problem Description Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本 ...
- POJ 1056 IMMEDIATE DECODABILITY 【Trie树】
<题目链接> 题目大意:给你几段只包含0,1的序列,判断这几段序列中,是否存在至少一段序列是另一段序列的前缀. 解题分析: Trie树水题,只需要在每次插入字符串,并且在Trie树上创建节 ...
- Trie入门讲解
我们常常用Trie(也叫前缀树)来保存字符串集合.如下图所示就是一个Trie. 上图表示的字符串集合为$\{a,to,tea,ted,ten,i,in,inn \}$,每个单词的结束位置对应一个“单词 ...
- Immediate Decodability UVA-644(qsort排序 + 模拟)
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> us ...
- UVA644 Immediate Decodability
UVA644 Immediate Decodability Trie Trie模板题 难度几乎相等的题P2580 于是他错误的点名开始了 对于每组数据都清空树太浪费时间,所以我们只要在需要新点时预先把 ...
随机推荐
- 数据库单,多,全库、冷热备份思路及备份与还原(mysqldump)
热备份:服务开启状态下进行备份, 冷备份:服务关闭状态进行备份, 冷备份 数据库原有内容如下: MariaDB [(none)]> show databases;+--------------- ...
- 在HTML中实现两个div并排显示
在HTML中让两个div并排显示,通常情况下有三种实现方式,包括: (1)设置为行内样式,display:inline-block (2)设置float浮动 (3)设置position定位属性为abs ...
- Spring boot+Thymeleaf传参跳转
$.ajax(): $.ajax({ type: "get", url:"/public/inform", async: true, data: detailJ ...
- Manjaro 安装 ibus-rime 输入法
Manjaro 安装 ibus-rime 输入法 安装软件包: sudo pacman -S ibus ibus-rime yay -S ibus-qt 编辑/添加配置文件~/.xprofile: e ...
- QGridLayout栅格布局函数参数设置
对于PyQt5的栅格布局函数,主要是实现多个控件之间的栅格布局形式,一般有两种设置方式: 1.Qdesigner布局设置时直接使用栅格布局函数,便可以把所需要布局的控件直接按照栅格方式来进行布局: 2 ...
- C#开发点滴记录
1.开发windows服务程序,不应该在程序中调用windform相关的方法与类库,会产生未知的异常,windows服务中是可以产生日志文件的,会生成在安装服务的当前路径下面,比如服务为D:/MySe ...
- C#多个泛型约束问题
多个约束之间使用逗号隔开,但不重复T约束. 1. private void AddControl<T>(TabPage tabPage, T userControl) where T: U ...
- 吴裕雄--天生自然Numpy库学习笔记:NumPy 算术函数
NumPy 算术函数包含简单的加减乘除: add(),subtract(),multiply() 和 divide(). 需要注意的是数组必须具有相同的形状或符合数组广播规则. import nump ...
- java web 学生信息录入
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- Spring AOP 中 advice 的四种类型 before after throwing advice around
spring AOP(Aspect-oriented programming) 是用于切面编程,简单的来说:AOP相当于一个拦截器,去拦截一些处理,例如:当一个方法执行的时候,Spring 能够拦截 ...