第一字符串(Trie&&Topology)
来源:互联网 发布:java给app提供接口 编辑:程序博客网 时间:2024/05/29 04:36
Bessie最近在玩字符串。她发现通过改变字母的顺序可以使一些字符串排在其他所有的字符串之前(按字典序从小到大排序)。
比如说,Bessie找到了对于字符串”omm”,”moo”,”mom”,和”ommnom”,她可以用标准的字母表把”mom”排在最前面,也可以用字母表”abcdefghijklonmpqrstuvwxyz”把”omm”排在最前面。但是,Bessie不能找出一个方案使”moo”或”ommnom”排在最前面。
请你帮助Bessie找出哪些字符串可以通过改变字母表来让它们排在最前面。要计算字符串X是否字典序比字符串Y小,要找到两个字符串最先出现的不同字符的位置,j。如果没有这样的位置存在,那么如果X的长度比Y短,则X字典序小于Y。否则,如果X[j]在字母表中比Y[j]早出现,那么X字典序小于Y。
输入N与N个串 , N<=30000 ,
输出
第1行,求表示能排在字典序最前面的字符串总数K。
第2..K+1行,每行包括能排在字典序最前面的字符串,输出顺序按照输入给出的顺序。
思路很直观:我们需要判断一个串是否能排第一,那么必然要确定某些字母的先后顺序,这些顺序可以用图来表示,图中如果存在矛盾则此串非法。
如何构图? 考虑用trie, 先将所有串插入trie,然后逐一判断,假设对于子串i,它在trie上走点x,那么点x的字母必须要比fa[x]的所有儿子代表的字母前,于是我们从x代表的字母向另一些字母连边。最后跑一次拓扑,若存在环则不合法。
0 0
- 第一字符串(Trie&&Topology)
- 【字符串】Trie
- 字符串匹配-trie自动机
- 字符串处理----Trie树
- 字符串排序/基数&Trie
- SPOJ KAOS [Trie]【字符串】
- 【字符串】【Trie】lcp 题解
- LeetCode基础-字符串-Trie
- trie后缀树字符串索引
- 字符串专题 kmp-trie-ac
- 第一课trie 树 POJ 2001
- PKU2001(Shortest Prefixes)字符串匹配-Trie树
- B - Trie树(字符串问题)
- Trie树|字典树(字符串排序)
- 字符串 KMP Trie AC自动机 后缀数组
- 【HihoCoder】Trie树 (字符串匹配)
- POJ 2503 Babelfish // 字符串映射,Trie
- Trie字符串(Remember the Word, LA 3942)
- Linux 网卡驱动学习(八)(基于 MAC 地址转发数据)
- 高并发事务处理方案 秒杀的分析
- CGContextRef用法
- 一些常见的warning
- poj 2386
- 第一字符串(Trie&&Topology)
- MySQL-python的安装
- 群论专题
- C# string.Format字符串格式化
- Jquery mobile 新手问题总汇
- Android 插件化 动态升级
- Android软件安全与逆向分析笔记(3)
- 重构1-5
- android入门(二) 第一个android程序:FuckWorld