BZOJ 1212 HNOI 2004 L语言 Trie树
标题效果:给一些词。和几个句子,当且仅当句子可以切子可以翻译词典,这意味着该子将被翻译。
找到最长前缀长度可以被翻译。
思维:使用Trie树阵刷。你可以刷到最长的地方是最长的字符串可以翻译到的地方。
PS:在BZOJ上Trie竟然比AC自己主动机快。我的渣代码都刷到第一篇了。。
。
CODE:
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std; struct Trie{
Trie *son[27];
bool end; Trie() {
memset(son,NULL,sizeof(son));
end = false;
}
}*root = new Trie(); int words,cnt;
char s[1 << 20|100],temp[20];
bool f[1 << 20|100]; inline void Insert(char *s)
{
Trie *now = root;
while(*s != '\0') {
if(now->son[*s - 'a'] == NULL)
now->son[*s - 'a'] = new Trie();
now = now->son[*s - 'a'];
++s;
}
now->end = true;
} inline void Ask(char *s,int i)
{
Trie *now = root;
int t = 0;
while(*s != '\0') {
if(now->son[*s - 'a'] == NULL)
return ;
now = now->son[*s - 'a'];
++s;
++t;
if(now->end) f[i + t] = true;
}
if(now->end) f[i + t] = true;
} inline int Work()
{
memset(f,false,sizeof(f));
f[0] = true;
int re = 0,length = strlen(s + 1);
for(int i = 0; i <= length; ++i) {
if(!f[i]) continue;
re = i;
Ask(s + i + 1,i);
}
return re;
} int main()
{
cin >> words >> cnt;
for(int i = 1; i <= words; ++i) {
scanf("%s",temp);
Insert(temp);
}
for(int i = 1; i <= cnt; ++i) {
scanf("%s",s + 1);
printf("%d\n",Work());
}
return 0;
}
版权声明:本文博客原创文章,博客,未经同意,不得转载。
BZOJ 1212 HNOI 2004 L语言 Trie树的更多相关文章
- 【BZOJ1212】[HNOI2004]L语言 Trie树
[BZOJ1212][HNOI2004]L语言 Description 标点符号的出现晚于文字的出现,所以以前的语言都是没有标点的.现在你要处理的就是一段没有标点的文章. 一段文章T是由若干小写字母构 ...
- [HNOI2004]L语言 trie树? Ac自动机? hash!!
题目描述 标点符号的出现晚于文字的出现,所以以前的语言都是没有标点的.现在你要处理的就是一段没有标点的文章. 一段文章T是由若干小写字母构成.一个单词W也是由若干小写字母构成.一个字典D是若干个单词的 ...
- BZOJ1212[HNOI2004]L语言——trie树+DP
题目描述 标点符号的出现晚于文字的出现,所以以前的语言都是没有标点的.现在你要处理的就是一段没有标点的文章. 一段文章T是由若干小写字母构成.一个单词W也是由若干小写字母构成.一个字典D是若干个单词的 ...
- [HNOI 2004]L语言
Description 标点符号的出现晚于文字的出现,所以以前的语言都是没有标点的.现在你要处理的就是一段没有标点的文章. 一段文章T是由若干小写字母构成.一个单词W也是由若干小写字母构成.一个字典D ...
- 【BZOJ 1212】[HNOI2004]L语言
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 因为查询的字典里面.单词的最大长度为10 所以. 如果建立一棵字典树的话. 深度最多为10: 那么可以写一个DP; 设f[i]表示1 ...
- [HNOI2004]L语言 字典树 记忆化搜索
[HNOI2004]L语言 字典树 记忆化搜索 给出\(n\)个字符串作为字典,询问\(m\)个字符串,求每个字符串最远能匹配(字典中的字符串)到的位置 容易想到使用字典树维护字典,然后又发现不能每步 ...
- Luogu P2292 [HNOI2004]L语言(Trie+dp)
P2292 [HNOI2004]L语言 题面 题目描述 标点符号的出现晚于文字的出现,所以以前的语言都是没有标点的.现在你要处理的就是一段没有标点的文章. 一段文章 \(T\) 是由若干小写字母构成. ...
- 【BZOJ】4260: Codechef REBXOR【Trie树】【前后缀异或最大】
4260: Codechef REBXOR Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 2218 Solved: 962[Submit][Stat ...
- BZOJ 3439 Kpm的MC密码 (Trie树+线段树合并)
题面 先把每个串反着插进$Trie$树 每个节点的子树内,可能有一些节点是某些字符串的开头 每个节点挂一棵权值线段树,记录这些节点对应的原来字符串的编号 查询的时候在线段树上二分即可 为了节省空间,使 ...
随机推荐
- Android之Camera控制拍照
package com.android.xiong.cameratest; import java.io.File; import java.io.FileOutputStream; import j ...
- scanf()常犯错误
------------------------------------------------------------------------ <> 本意:接收字符串. 写成代码:voi ...
- awk 工具简介NF-NR
相较于 sed 常常作用于一整个行的处理, awk 则比较倾向于一行当中分成数个『字段』来处理. 因此,awk 相当的适合处理小型的数据数据处理呢!awk 通常运作的模式是这样的:[root@linu ...
- getElementById的缩略
谁都知道document.getElementById这个方法写起来比较麻烦,所以有时候我们会使用jq或者自己写一个小函数去封装,但是我这次说的缩略不同于往常的函数封装 在以前,我做过很多这样的尝试, ...
- BZOJ 1531: [POI2005]Bank notes( 背包 )
多重背包... ---------------------------------------------------------------------------- #include<bit ...
- 关于callContext
coding们肯定有这种需求,在程序中,方法一级级调下去,比如A->b->C->D.... ->Z.在调用过程中,希望在调用函数之间传递一些数据,常见的是将特定的数据从高往低处 ...
- hdu4708 Rotation Lock Puzzle
Rotation Lock Puzzle Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- Nodejs 项目开发
最近这几个月都在学习nodejs. 国内nodejs的资料相对较少,就我所搜索到的,CSDN目前的代码托管平台有不少从github弄过来的开源镜像,其它的不错的社区有cnodejs,byvoid的个人 ...
- unity3d游戏开发猜想——当程序猿老去
程序猿将代码注入生命去打造互联网的浪潮之巅.当有一天他们老了.会走向那里,会做些什么? 4.4.0" alt="" style="border:0px; ver ...
- QDockWidget嵌套布局详解-实现Visual Studio布局
概述 许多工程软件,如Qt Creator,VS,matlab等,都是使用dock布局窗口,这样用户可以自定义界面,自由组合窗口. Qt的嵌套布局由QDockWidget完成,用Qt Creator拖 ...