【BZOJ1212】[HNOI2004]L语言 Trie树】的更多相关文章

题目描述 标点符号的出现晚于文字的出现,所以以前的语言都是没有标点的.现在你要处理的就是一段没有标点的文章. 一段文章T是由若干小写字母构成.一个单词W也是由若干小写字母构成.一个字典D是若干个单词的集合. 我们称一段文章T在某个字典D下是可以被理解的,是指如果文章T可以被分成若干部分,且每一个部分都是字典D中的单词. 例如字典D中包括单词{‘is’, ‘name’, ‘what’, ‘your’},则文章‘whatisyourname’是在字典D下可以被理解的 因为它可以分成4个单词:‘wha…
[BZOJ1212][HNOI2004]L语言 Description 标点符号的出现晚于文字的出现,所以以前的语言都是没有标点的.现在你要处理的就是一段没有标点的文章. 一段文章T是由若干小写字母构成.一个单词W也是由若干小写字母构成.一个字典D是若干个单词的集合. 我们称一段文章T在某个字典D下是可以被理解的,是指如果文章T可以被分成若干部分,且每一个部分都是字典D中的单词. 例如字典D中包括单词{'is', 'name', 'what', 'your'},则文章'whatisyournam…
题目描述 标点符号的出现晚于文字的出现,所以以前的语言都是没有标点的.现在你要处理的就是一段没有标点的文章. 一段文章T是由若干小写字母构成.一个单词W也是由若干小写字母构成.一个字典D是若干个单词的集合.我们称一段文章T在某个字典D下是可以被理解的,是指如果文章T可以被分成若干部分,且每一个部分都是字典D中的单词. 例如字典D中包括单词{'is', 'name', 'what', 'your'},则文章'whatisyourname'是在字典D下可以被理解的,因为它可以分成4个单词:'what…
Description 标点符号的出现晚于文字的出现,所以以前的语言都是没有标点的.现在你要处理的就是一段没有标点的文章. 一段文章T是由若干小写字母构成.一个单词W也是由若干小写字母构成.一个字典D是若干个单词的集合. 我们称一段文章T在某个字典D下是可以被理解的,是指如果文章T可以被分成若干部分,且每一个部分都是字典D中的单词. 例如字典D中包括单词{‘is’, ‘name’, ‘what’, ‘your’},则文章‘whatisyourname’是在字典D下可以被理解的 因为它可以分成4个…
[HNOI2004]L语言 字典树 记忆化搜索 给出\(n\)个字符串作为字典,询问\(m\)个字符串,求每个字符串最远能匹配(字典中的字符串)到的位置 容易想到使用字典树维护字典,然后又发现不能每步一直贪心无脑取最长匹配,所以考虑\(dfs\)穷举情况,每次匹配到新字符串后,分两种情况,要么继续当前的匹配,要么完成当前匹配,开始进行下一个字符串的匹配. 但是这样显然会\(TLE\),于是考虑记忆化,注意到性质:对于一个当前搜到并且之前已经搜过的位置,这个位置上的答案与前面如何搜的无关,于是记忆…
1212: [HNOI2004]L语言 题目:传送门 题解: 看完题目之后就觉得可以暴力在字典树上之间询问,一开始还傻了以为用文章来建,肯定用单词啊: 那么我们可以用一个v数组表示当前字符串1~i的区间能够被覆盖,v[0]就初始化一下 然后一开始就把位置挪到当前已经处理到的能覆盖的位置x,然后从x+1开始在字典树上跑,跑到一个单词的结尾就更新当前位置的v(即使单词有包含关系也没所谓,只要路过就会更新,找不到了才结束,那肯定跑到最后一个位置最优啊),然后重复操作(换一个单词) 严重吐槽:说好的是字…
P2292 [HNOI2004]L语言 题面 题目描述 标点符号的出现晚于文字的出现,所以以前的语言都是没有标点的.现在你要处理的就是一段没有标点的文章. 一段文章 \(T\) 是由若干小写字母构成.一个单词 \(W\) 也是由若干小写字母构成.一个字典 \(D\) 是若干个单词的集合.我们称一段文章 \(T\) 在某个字典 \(D\) 下是可以被理解的,是指如果文章 \(T\) 可以被分成若干部分,且每一个部分都是字典 \(D\) 中的单词. 例如字典 \(D\) 中包括单词 \(\{'is'…
L语言 bzoj-1212 HNOI-2004 题目大意:给你一个n个单词的集合,然后给你m条字符串.问每条字符串可以被理解的最长前缀.被理解当且仅当存在一种分割使得每一段都是集合里的元素. 注释:$1\le n,m\le 20$,长度不超过1M 想法:做了上一道,感觉这是个大水题... ...,我们将那个单词集合建立一个AC自动机,然后将每一个询问的字符串仍在字符串上跑,用bool型的dp. dp[i]表示当前字符串前i位是否能被理解. 转移:如果j+1到i这段能被理解,那么dp[i]|=dp…
标题效果:给一些词.和几个句子,当且仅当句子可以切子可以翻译词典,这意味着该子将被翻译. 找到最长前缀长度可以被翻译. 思维:使用Trie树阵刷.你可以刷到最长的地方是最长的字符串可以翻译到的地方. PS:在BZOJ上Trie竟然比AC自己主动机快.我的渣代码都刷到第一篇了.. . CODE: #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using…
枚举每个文章里已经在Trie中被标记为可能是分割处的字符,然后再从此处跑Trie,继续向后标记.由于单词数很少,因此复杂度可以接受,O(n*m*Len). #include<cstdio> #include<cstring> using namespace std; int n,m,L; char s[1024*1024+100]; int ch[21*11][26]; bool is[21*11],end[1024*1024+100]; int sz; void Insert(c…