UVA 1401 Remember the Word(Trie树 套 DP)

中科蓝讯AB536X/AB892X芯片开发避坑指南:Downloader配置中那些容易忽略的细节 本文详细解析中科蓝讯AB536X/AB892X芯片开发中Downloader配置的关键细节,包括软开关机实现、触摸灵敏度调试、量产校频等常见问题。特别针对无PR口芯片的替代方案、触摸参数优化、校频流程等易忽略环节提供实用解决方案,帮助开发者规避量产风险,提升开发效率。 阅读详情

【题意】给出一个有S个不同单词组成的字典和一个字符串。把这个字符串分解成若干个单词的连接,有多少种方法?

【解题方法】令dp[i]表示以字符i结束的字符串的分解方案数,即dp[i+j] = sum(dp[i]) (j为一个单词的长度),初始化dp[0] = 1;把所有单词组成Trie,然后试着在Trie中查找单词即可。

【代码君】

//
//Created by just_sort 2016/10/12
//Copyright (c) 2016 just_sort.All Rights Reserved
//

#include <set>
#include <map>
#include <queue>
#include <stack>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long LL;
const int maxn = 444444;
const int maxm = 26;
const int mod =  20071027;
int dp[333333];
char s[333333];
struct Trie{
    int ch[maxn][maxm],val[maxn],root,sz;
    int newnode(){
        val[sz] = 0;
        memset(ch[sz],0,sizeof(ch[sz]));
        return sz++;
    }
    void init(){
        sz = 0;
        root = newnode();
    }
    void insert(char *s,int v){
        int len = strlen(s);
        int u = root;
        for(int i = 0; i < len; i++){
            int now = s[i] - 'a';
            if(!ch[u][now]){
                ch[u][now] = newnode();
            }
            u = ch[u][now];
        }
        val[u] = v;
    }
//    int find(char *s){
//        int len = strlen(s);
//        int u = root;
//        for(int i = 0; i < len; i++){
//            int now = s[i] - 'a';
//            if(!ch[u][now]) return 0;
//            u = ch[u][now];
//        }
//        return val[u];
//    }
}trie;

int main()
{
    int ks = 1, n;
    while(scanf("%s",s+1)!=EOF)
    {
        trie.init();
        scanf("%d",&n);
        for(int i = 1; i <= n; i++){
            char op[110];
            scanf("%s",op);
            trie.insert(op, 1);
        }
        int len = strlen(s+1);
        memset(dp, 0, sizeof(dp));
        dp[0] = 1; s[0] = '$';
        for(int i = 0; s[i]; i++)
        {
            int u = 0;
            for(int j = 1; j <= len; j++){
                int now = s[i+j] - 'a';
                u = trie.ch[u][now];
                if(!u) break;
                else if(trie.val[u] == 1){
                    dp[i+j] = (dp[i+j] + dp[i]) % mod;
                }
            }
        }
        printf("Case %d: %d\n",ks++,dp[len]);
    }
    return 0;
}


ggml_cgraph 详解 是 GGML 库的(Computation Graph)结构,它是深度学习框架的核心,用于表示、优化和执行神经网络的计算过程。 阅读详情

相关推荐

ArcGIS 10.2.2自带Python 2.7.5环境配置全攻略:从pip安装到gdal、arcpy调用

本文详细指导如何在ArcGIS 10.2.2自带的Python 2.7.5环境中进行高效配置。核心内容包括安装pip包管理器、部署gdal等关键地理数据处理库,并确保arcpy模块的无缝调用。通过解决路径配置与PyCharm集成问题,帮助用户在此经典环境中构建稳定、兼容的地理信息自动化工作流,有效连接ArcGIS桌面功能与Python脚本编程。

moon9的博客 767

UVA 1401 Remember the Word

【题意】给出一个有S个不同单词组成的字典和一个字符串。把这个字符串分解成若干个单词的连接,有多少种方法? 【解题方法】令dp[i]表示以字符i结束的字符串的分解方案数,即dp[i+j] = sum(dp[i]) (j为一个单词的长度),初始化dp[0] = 1;把所有单词组成Trie,然后试着在Trie中查找单词即可。 【AC代码】 //File Name: Trie Tree. //C

I good vegetable a! 384

ldpc编解码器设计与仿真

计算校验节点到变量节点的消息 m_{c \to v}=2 \cdot atanh(\prod_{v’ \in N©\setminus v}tanh(\frac{m_{v’ \to c}}{2}))。计算变量节点到校验节点的消息 m_{v \to c}=L_{v,0}+\sum_{c’ \in M(v)\setminus c}m_{c’ \to v}。◦ 对于每个变量节点 v,计算最终 LLR 值 L_{v,f}=L_{v,0}+\sum_{c \in M(v)}m_{c \to v}。

youngerwang的博客 809

1049 - Remember the A La Mode!

Hugh Samston owns the ``You Want It, Hugh Got It" catering service, which has been asked to supply desserts for the participants in this year's ICPC World Finals. Hugh will provide pie slices topped w

1319

pgpool-II踩坑日记两则

最近结合pgpool-II进行postgreSQL高可用的部署,过程非常煎熬,作为新手,公司也没有前辈熟悉postgreSQL,只能自己摸索。好在已经搞明白了,把困扰我很长时间的两个问题分享一下。 1. show pool_nodes 第一个问题就是 show pool_nodes 的使用,照着教程建好后,在哪里执行这个指令呢?我在pg服务器上怎么执行这个指令都显示 ERROR: unrecognized configuration parameter "pool_nodes",一度怀疑人生。翻阅了很多资料

zhaizhai6_6的博客 4540

Codesys.运动控制修改凸轮点

通过改凸轮曲线的主从轴缩放比例或者偏置。 新建多个凸轮曲线,对CAM曲线进行切换。 程序中动态修改,仅修改中间的关键点(凸轮末点修改or凸轮曲线运行中修改)。 程序中动态修改,修改首未关键点及关键点个数,需要重新触发MC_TableSelect。 使用程序新建凸轮表代码,实现电子凸轮基本运动。 我们讲的凸轮表切换、关键点修改、程序新建电子凸轮,这些方法没有本质区别,总之都是“趁曲线不注意,把凸轮表改了。

傻响雨 6828

UVA - 1401-------trie&&dp

Remember the Word UVA - 1401(传送门) 题意: 给你一个字典。和一个模式串。 现在要求你按照字典分割模式串。 求: 方案数。 思路: 很容易想到递推的思想。 一般思路: 先

qq_45377553的博客 176

Calibre PEX提参实战:如何用hcell和xcell文件精准屏蔽模块(附避坑指南)

本文深入解析Calibre PEX工具中hcell与xcell文件的协同工作机制,提供模块级寄生参数提取方案。通过实战案例和避坑指南,帮助工程师精准屏蔽已验证IP模块,提升仿真效率和数据一致性,适用于65nm以下工艺节点的复杂SoC设计。

weixin_29275257的博客 627

蓝桥杯:试题 算法训练 Remember the A La Mode

蓝桥杯:试题 算法训练 Remember the A La Mode 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述   Hugh Samston经营着一个为今年的ICPC世界总决赛的参与者提供甜点的餐饮服务。他将会提供上面有冰激凌的饼片。为了满足不同的需求,他准备了许多不同的饼片和冰激凌。   Hugh希望以一份饼片上一份冰激凌的方式来提供甜点。然而,作为一个商人,他希望能...

潇囧囧_的博客 739

大规模SoC芯片Hierarchical Flow Calibre LVS教程

大规模SoC芯片Hierarchical Flow Calibre物理验证LVS实现教程

weixin_37584728的博客 1200

详细解释SigLIP的原理,为什么有些多模态模型喜欢用他?怎么应用于机器人控制呢

详细解释SigLIP的原理,为什么有些多模态模型喜欢用他?怎么应用于机器人控制呢。

具身机器人和通用AI 1230

uva 1401 字典树模板

f[i] += f[j] i

chromosome24k的博客 250

【100%通过率】华为od机试C卷【特殊的加密算法】Python 实现

有一种特殊的加密算法,明文为一段数字串,经过密码本查找转换,生成另一段密文数字串。规则如下1.明文为一段数字串由0-9组成2.密码本为数字0-9组成的二维数组3.需要按明文串的数字顺序在密码本里找到同样的数字串,密码本里的数字串是由相邻的单元格数字组成,上下和左右是相邻的,注意:对角线不相邻,同一个单元格的数字不能重复使用。

MISAYAONE的博客 5924

UVa 1401 Remember the Word

本文探讨了如何高效计算字符串划分方式数的问题。给定一个长字符串和单词字典,要求将字符串划分为字典中的单词组合,计算所有可能的划分方式数。通过分析直接动态规划方法的高复杂度(O(n×S×L)),提出使用Trie树优化匹配过程,将复杂度降至O(n×100)。具体实现包括构建Trie树存储字典单词,利用动态规划数组记录前i个字符的划分方式数,并在每个位置最多匹配100个字符进行状态转移。最终算法通过结合Trie树和动态规划,有效解决了大规模字符串划分的计数问题。

寂静山林 642

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

UVa1401 Remember the Word(DP+Trie树)

题目给定一个字符串集合有几种方式拼成一个字符串。 dp[i]表示stri...strlen-1的方案数 dp[len]=1 dp[i]=∑dp[j](stri...strj-1∈SET) 用集合的字符串构造一棵Trie树,然后就可以在线性时间判断哪几个前缀字符串在集合里。 1 #include<cstdio> 2 #include<cstri...

dengliugong3918的博客 143

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

UVA1401 Remember the word DP+Trie

问题描述 洛谷(有翻译) 题解 DP,设\(opt_i\)代表前\(i\)个字符方案数。 Trie优化,刷表法。 \(\mathrm{Code}\) #include<bits/stdc++.h> using namespace std; template <typename Tp> void read(Tp &x){ x=0;char ch...

LIUZHH2088的博客 219

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【UVA1401】Remember the Word Trie+dp

题目大意:给定一个字符串和一个字符串集合,问从集合中选出若干个串组成给定母串的不同方案数。 题解:有些类似于背包问题。状态很好表示,为:\(dp[i]\) 表示母串前 i 个字符的不同方案数,因此,有状态转移方程为:\[dp[i]=\sum dp[j],s[j+1...i]=s_0,s_0\in set\] ,可以发现若枚举 \(j < i\) 作为决策集合的话,时间复杂度将是 \...

K1385170的博客 168

【Trie】 UVA1401 Remember the Word

【代码】【Trie】 UVA1401 Remember the Word。

2401_89382924的博客 568

uva 1401Remember the Word(trie树+dp)

题意:给一个由s个单词组成的字典和一个长字符串。把这个字符串分解成若干个单词的连接(单词可重复使用),有多少种方法? 思路:令d(x)表示从字符i开始的字符串(即后缀s[i....L])的分解方案数,则d(i)=sum{d+len(x) | 单词x是s[i...L]的前缀}。          所以可以先把单词写入trie树,然后从从后往前在长串的每个位置找前缀即可。 #include #i

AC之路 457

UVA 1401 Remember the Word(字典树+dp)

题目链接:https://vjudge.net/problem/UVA-1401 参考自:①https://www.cnblogs.com/xuqiulin/p/4034143.html ②《算法竞赛入门经典 训练指南》 刘汝佳 解题思路: ① 首先想到dp的思路,dp[i]表示str[0]~str[i-1]的字符串可以分解成的单词的方法数目 那么dp[0]...

shadiao.的博客 274

UVA 1401 - Remember the Word(Trie+DP)

UVA 1401 - Remember the Word [题目链接] 题意:给定一些单词。和一个长串。问这个长串拆分成已有单词,能拆分成几种方式 思路:Trie,先把单词建成Trie。然后进行dp。dp[i]表示以i为开头的情况,然后每一个状态仅仅要在Trie树上找到对应的i开头的单词,然后dp[i] = sum{dp[i + len]}进行状态转移就可以...

aofan9566的博客 166

UVA1401 Remember the Word

思路 用trie树优化dp 设f[i]表示到第i个的方案数,则有\(f[i]=\sum_{x}f[i+len[x]]\)(x是s[i,n]的一个前缀),所以需要快速找出所有前缀,用Trie树即可 代码 #include <cstdio> #include <algorithm> #include <cstring> using namespace std; co...

weixin_33836874的博客 166

Uva1401/LA3942 Remember the Word(trie模板)

LRJ书上例题,但是自己在思考过程中挺有收获。。。。 UVA1401题目直达 题目大意是拆解字符串,有几种方法。 简单思路:设dp[i]dp[i]为字符串从第i位开始的拆解方法;仔细一想的话就会发现这样的关系:dp[i]=∑j∈[1,S]dp[i+len[j]]dp[i]=\sum_{j\in[1,S]} dp[i+len[j]] 其中SS为单词总数,j为单词编号。 使用trie可以实现,

VOCACODE 456

uva1401 Remember the Word

dp+trie树

YHaX的博客 546

Uva1401 Remember the Word

Neal is very curious about combinatorial problems, and now here comes a problem about words. Knowing that Ray has a photographic memory and this may not trouble him, Neal gives it to Jiejie. Since Jie...

叶上初阳_285557的博客 247

Uva1401 - Remember the Word

#include #define maxn 100010 #define INF (int)(1e9) #define MOD 20071027 #define maxnode 500010 #define sigma_size 30 typedef long long ll; using namespace std; int dp[maxnode]; char str[max

421
上一篇: UVALive 4126 Password Suspects(AC自动机 套 DP)
下一篇: UVA 1399 Puzzle 求一个最长的串使得该串不包含任何禁止串为子串 AC自动机 + DP +dfs判环
just_sort
博客等级 码龄11年 2357粉丝 1667原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值