题目大意:每一个字符串都可以分解成一些个单词组成,现在给你一些单词,再给你一个字符串,

dp吧,设f[i]为从0开始,到i结束的字符串前缀是否可以被分解,因为单词长度很小,所以,这就T了,

(什么逻辑),怎么才能不T呢,我们在转移的时候用Trie,可以把转移从O(100)优化成O(10),那么这就AC了

#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
using namespace std;

struct Trie{
    int ch[1000][50];
    int val[1000];
    int len;
    char s[100];
    char str[1000010];
    int f[1000210];
    int size;
    inline int num(char x){
        return x - 'a';
    }
    inline void insert(){
        int u = 0;
        for(int i = 0; i < len; i ++){
            int c = num(s[i]);
            if(!ch[u][c]){
                ch[u][c] = ++ size;
            }
            u = ch[u][c];
        }
        val[u] = 1;
    }
    inline void find(int e){
        int u = 0;
        for(int i = 1; i <= len; i ++){
            int c = num(s[i]);
            if(!ch[u][c]) return;
            u = ch[u][c];
            if(val[u]) f[e + i] = 1;
        }
        return;
    }
    inline int dp(int l){
        f[0] = 1;
        for(int i = 1; i <= 10; i ++) f[i] = 0;
        int gh = 0;
        for(int i = 0; i <= l; i ++){
            f[i + 10] = 0;
            if(!f[i]) continue;
            if(i > gh) gh = i;
            for(int j = i; j <= min(i + 9, l - 1); j ++){
                s[j - i + 1] = str[j];
            }
            len = min(i + 9, l - 1) - i + 1;
            find(i);
        }
        return gh;
    }
} wt;
int main(){
    int n, m;
    scanf("%d%d", &n, &m);
    for(int i = 1; i <= n; i ++){
        scanf("%s", wt.s);
        wt.len = strlen(wt.s);
        wt.insert();
    }
    for(int i = 1; i <= m; i ++){
        scanf("%s", wt.str);
        int len = strlen(wt.str);
        printf("%d\n", wt.dp(len));
    }
    return 0;
} 

BZOJ1212——L语言的更多相关文章

  1. bzoj1212 L语言

    Description 标点符号的出现晚于文字的出现,所以以前的语言都是没有标点的.现在你要处理的就是一段没有标点的文章. 一段文章T是由若干小写字母构成.一个单词W也是由若干小写字母构成.一个字典D ...

  2. [HNOI2004][bzoj1212] L语言 [Trie+dp]

    题面 传送门 思路 无后效性 显然,不管某个前缀的理解方式是怎么样的,如果它能被理解,那么前面的决策对于后面的决策而言都是等价的 因此这题可以DP DP方程 令$dp[i]$表示前缀i是否能被理解 那 ...

  3. 【BZOJ1212】[HNOI2004]L语言 Trie树

    [BZOJ1212][HNOI2004]L语言 Description 标点符号的出现晚于文字的出现,所以以前的语言都是没有标点的.现在你要处理的就是一段没有标点的文章. 一段文章T是由若干小写字母构 ...

  4. 【BZOJ1212】L语言(AC自动机)

    [BZOJ1212]L语言(AC自动机) 题面 BZOJ 题解 很自然的,既然要匹配单词,那就全部都丢到\(AC\)自动机里面去 现在想想怎么匹配 先是\(AC\)自动机正常的匹配 如果此时这个位置能 ...

  5. [bzoj1212][HNOI2004]L语言_AC自动机_动态规划

    L语言 bzoj-1212 HNOI-2004 题目大意:给你一个n个单词的集合,然后给你m条字符串.问每条字符串可以被理解的最长前缀.被理解当且仅当存在一种分割使得每一段都是集合里的元素. 注释:$ ...

  6. bzoj1212: [HNOI2004]L语言(字典树)

    1212: [HNOI2004]L语言 题目:传送门 题解: 看完题目之后就觉得可以暴力在字典树上之间询问,一开始还傻了以为用文章来建,肯定用单词啊: 那么我们可以用一个v数组表示当前字符串1~i的区 ...

  7. BZOJ 1212: [HNOI2004]L语言 [AC自动机 DP]

    1212: [HNOI2004]L语言 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1367  Solved: 598[Submit][Status ...

  8. BZOJ 1212: [HNOI2004]L语言( dp + trie )

    因为单词很短...用trie然后每次dp暴力查找...用哈希+dp应该也是可以的.... ------------------------------------------------------- ...

  9. [HNOI2004]Language L语言

    2777: [HNOI2004]Language L语言 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 10  Solved: 5[Submit][S ...

随机推荐

  1. 用LinkedList模拟栈数据结构的集合

    用Eclipse软件进行操作    有2种方法,左边为第一种,右边为第二种 创建class为MyStack 代码实现: package cn_LinkedList;   import java.uti ...

  2. POJ 2388 Who's in the Middle(水~奇数个数排序求中位数)

    题目链接:http://poj.org/problem?id=2388 题目大意: 奇数个数排序求中位数 解题思路:看代码吧! AC Code: #include<stdio.h> #in ...

  3. HTML 个人资料框

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. Ad-Hoc命令不熟悉的选项

    -f #并发线程数,默认5个线程 --private-key #指定秘钥文件 -k #--ask-pass SSH:认证密码 -K, #--ask-sudo-pass sudo:用户的密码(--sud ...

  5. expect神器安装和使用

    安装: mdkir /data/tools cd /data/tools wget http://prdownloads.sourceforge.net/tcl/tcl8.5.19-src.tar.g ...

  6. PNG类库

    libpng depends on Zlib http://www.libpng.org/pub/png/libpng.html LodePNG http://lodev.org/lodepng/ P ...

  7. css 父层 透明 子层不透明Alpha

    html代码 <div class="user2-register-bg"> <div class="user2-register-con"& ...

  8. 商城常用css分类代码

    如图: 原代码如下: <div class="allMerchan bgnone"> <h2 class="ttlm_category"> ...

  9. PCH 配置

    $(SRCROOT)/$(PROJECT)/PrefixHeader.pch

  10. Django笔记-post与get方法相关出错记录

    1.刚刚调试一个注册的程序,blog.views.register里用了return HttpResponse方法返回了一个注册页面 register.html,后者用了method = " ...