Remember the Word,uva 1401 (trie+dp)

Android 开发实战:从零到一集成 espeak-ng 实现中文离线 TTS(无需账号开箱即用) 本文详细介绍了如何在 Android 项目中集成 espeak-ng,实现中文离线语音播报。通过下载 so 库、编写 Java 接口、封装管理类,开发者可快速构建无需账号的 TTS 功能。文章覆盖从零到一的开发步骤、调试技巧及性能优化,适合中高级 Android 开发者参考。 阅读详情

Link

算法竞赛经典训练指南p209

题意
给定一些单词,和一个长串,问这个长串拆分成已有单词,能拆分成几种方式

trie基本模板

int ch[maxn][30];	//ch[i][j]:结点i的第j个字符对应结点号 
int val[maxn];
int tot;
struct trie{
	trie(){
		tot=1;
		memset(ch[0],0,sizeof(ch[0]));
	}
	int idx(char c){
		return c-'a';
	}
	void insert(char *s,int w){
		int u=0,n=strlen(s);
		for(int i=0;i<n;i++){
			int v=idx(s[i]);
			if(!ch[u][v]){
				memset(ch[tot],0,sizeof(ch[tot]));
				val[tot]=0;
				ch[u][v]=tot++;
			}
			u=ch[u][v];
		}
		val[u]=w;
	}
	int query(char *s){
		int u=0,n=strlen(s);
		for(int i=0;i<n;i++){
			int v=idx(s[i]);
			u=ch[u][v];
			if(u==0) return 0;
		}
		return val[u];
	}
};

AC code

#include <bits/stdc++.h>
using namespace std;
#define int long long
const int maxn=1e6+5;
const int mod=20071027;
const int inf=1e18;
/************/
char a[maxn],b[5005][105];
int n,go=1,len,dp[maxn];	//dp[i]:从第i个字符至结尾可行的分解方案数 
int ch[maxn][30];	//ch[i][j]:结点i的第j个字符对应结点号 
int val[maxn];
int tot;
struct trie{
	trie(){
		tot=1;
		memset(ch[0],0,sizeof(ch[0]));
	}
	int idx(char c){
		return c-'a';
	}
	void insert(char *s,int w){
		int u=0,n=strlen(s);
		for(int i=0;i<n;i++){
			int v=idx(s[i]);
			if(!ch[u][v]){
				memset(ch[tot],0,sizeof(ch[tot]));
				val[tot]=0;
				ch[u][v]=tot++;
			}
			u=ch[u][v];
		}
		val[u]=w;
	}
	int query(char *s){
		int u=0,n=strlen(s);
		for(int i=0;i<n;i++){
			int v=idx(s[i]);
			u=ch[u][v];
			if(u==0) return 0;
		}
		return val[u];
	}
	//上述为基本模板 
	void cal(int i){
		int u=0;
		dp[i]=0;
		for(int j=i;j<=len;j++){
			int v=idx(a[j]);
			u=ch[u][v];
			if(u==0) return;
			if(val[u]) dp[i]=(dp[i]+dp[j+1])%mod;
		}
	}
};
signed main()
{
	while(~scanf("%s",a+1)){
		len=strlen(a+1);
		struct trie tree;
		scanf("%lld",&n);
		for(int i=1;i<=n;i++) dp[i]=0;
		for(int i=1;i<=n;i++){
			scanf("%s",b[i]);
			tree.insert(b[i],1);
		}
		dp[len+1]=1;
		for(int i=len;i>=1;i--){
			tree.cal(i);
		}
		printf("Case %lld: %lld\n",go++,dp[1]);
	}
	return 0;
}

时间复杂度
O(nlogn)

2026 最新安全 Skill 合集(CTF / 审计 / 渗透 / 红队)威胁建模一网打尽 2026年安全领域进入"Skill化"时代,各类安全能力被结构化封装为可复用的AI Skill。本文介绍了7个核心安全Skill项目:渗透测试全流程的AgentSkillsHub、CTF解题技能库ctfskills、多语言代码审计工具codeaudit、PHP专项审计系统、Java自动化审计流水线、威胁建模工具threatmodeling以及覆盖30+领域的Anthropic-Cybersecurity-Skills。这些项目将传统安全经验转化为标准化、可验证、可自动执行的模块化能力,支 阅读详情

相关推荐

使用PLINK做GWAS(2)

利用PLINK对单基因控制的性状进行定位,之前一篇文章粗滤的记录了一下使用PLINK的命令,本次博客主要记录一下如何根据SNP芯片的数据制作PLINK的格式,以及分析的步骤,最后数据的可视化。 首先,有的公司给的新片的数据就是一个excel表格,列表示的是样品,行表示的是基因型,基因型用ATCG构成,当然有的基因型是用数字0或者1表示的。下面我拿到的一个数据是15个样品构成的基因型,有13个样品是突变体,2个样品是野生型。 格式如下: 第二步:将此基因型存成csv文件,使用R进行读取,在R中制作pl

samhuairen的专栏 2921

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

PCB模块化设计24——DCDC电源模块PCB布局布线设计规范

PCB模块化设计24——DCDC电源模块PCB布局布线设计规范

qq_31444421的博客 2万+

【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

【5G全网建设】Option3X和Option2模式建安市、兴城市和四水市核心网、承载网网络设计与部署

拓扑规划: Option 3X网络拓扑图规划 Option 2网络拓扑图规划 设备部署: 建安市核心网 建安市承载中心机房 建安市骨干汇聚机房 建安市3区汇聚机房 建安市C站点无线机房 兴城市核心网 兴城市承载中心机房 兴城市骨干汇聚机房 兴城市2区汇聚机房 兴城市B站点无线机房 数据配置: 建安市核心网 建安市承载中心机房 建安市骨干汇聚机房 建安市3区汇聚机房 建安市C站点无线机房 兴城市核心网 兴城市承载中心机房 兴城市骨干汇聚机房 兴城市2区汇聚机房 兴城市B站点无线机房 业务调试

weixin_67183034的博客 8853

时序基础模型Timer-S1:十亿参数如何革新时间序列预测

时间序列预测是数据分析与机器学习中的核心任务,旨在基于历史数据预测未来趋势。其原理在于捕捉数据中的趋势、周期性和季节性等时序依赖关系。这项技术的价值在于赋能业务决策,广泛应用于金融风控、能源管理、物联网监控和供应链优化等关键场景。传统方法依赖针对特定任务的专用模型,面临泛化能力弱和开发成本高的挑战。本文聚焦的时序基础模型,通过在海量跨领域数据上进行预训练,学习时序通用模式,并结合十亿级参数带来的强大容量,实现了性能的显著突破。这种范式转变,使得模型能够像“全科医生”一样,通过少量数据微调即可快速适应新任务,

weixin_29164843的博客 269

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

七、永磁同步电机矢量控制(FOC)—MTPA控制及Simulink仿真

前面几节的内容已经完成Id=0控制策略的理论和仿真以及双闭环PI参数整定。在接下来几节中,将陆续讲解MTPA、弱磁控制等内容。

weixin_45182459的博客 8190

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

【AI Agent系列】【阿里AgentScope框架】0. 快速上手:AgentScope框架简介与你的第一个AgentScope程序

这是我们学习的第四款智能体框架了。前面我们学习了 AutoGPT、MetaGPT、LangGraph 等智能体应用开发框架,各有优缺点。今天我们开始学习AgentScope这一款多智能体开发框架。卷起来吧,多看看,多用用,没坏处。

同学小张的博客 5425

AutoJs调用DeepSeek大模型接口实战教程 AutoJs接入DeepSeek、 DeepSeek API调用 、 手机脚本接入大模型

通过这篇文章,我们用 AutoJs 成功接入了 DeepSeek Chat API。使用发送请求在 Header 里正确携带 API Key从里拿到最终返回结果这样一来,你就可以在 AutoJs 里实现一个智能助手脚本,甚至做更复杂的 AI 自动化工具。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 467

UVA 1401 Remember the Word(DP+字典树Trie)

UVA 1401 Remember the Word(DP+字典树Trie) https://vjudge.net/problem/UVA-1401 题意:         给你一个由N个单词组成的词典,和一个字符串S。问你S由N中的单词组成的方法有多少种?字典中的单词可以重复使用但是不可重叠。 分析:         我们令d[i]=x表示S串的后缀[i,L-1]串有多少种构成方式

qq_36782366的博客 268

8、Windows 部署ollama

一个本地运行大模型的集成框架,目前主要针对主流的LLaMA架构的开源大模型设计,通过将模型权重、配置文件和必要数据封装进由Modelfile定义的包中,从而实现大模型的下载、启动和本地运行的自动化部署及推理流程。此外,Ollama内置了一系列针对大模型运行和推理的优化策略,目前作为一个非常热门的大模型托管平台,已被包括LangChain、Taskweaver等在内的多个热门项目高度集成。

Andy_shenzl的博客 1131

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

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

【Trie+dp】UVA1401 Remember the Word

这道题目由于S较为长,所以暴力枚举一定是超时的 所以考虑f[i]表示从i-L(后缀)的方案数 那么就可以推出 f[i]=sum{f[i+len(suf)],suf是i-L的一个前缀} 然后就可以在字典树上求这个前缀了 代码 #include<bits/stdc++.h> using namespace std; const int mod=20071027; const int maxn=3e5+5; char str[maxn],s[maxn]; int n,f[max..

andyc_03的博客 142

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

UVa 1401 Remember the Word(Trie+DP)

题意:输入一个字符串,再输入n个子串,计算出字符串被不同子串组成的方式有几种。 Trie字典树+DP insert()构造字典树,如果是子串,则val记录为1,否则为0,ch为字符的编号。 query()计算字符串中每一个字符可能被子串组成的方式有几种,用sum[]记录。 #include #include #include #define N 300010 #def

A place to record sth. 593

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

uva 1401 Remember the Word ( Trie + DP )

题意:给出n(n 思路:Trie,先把单词建成Trie,然后进行dp,dp[i]表示以字符串中第i个字母为开头的情况,然后每个状态只要在Trie树上找到相应的字母开头的单词,然后dp[i] = sum{dp[i + len(x)]}进行状态转移即可 这个x是n个单词中的一个,可以用Trie查询 code: #include #include #include using namesp

GejinZ 1226

uva 1401 Remember the Word(Trie dp)

s0s1 F[i] 以i结尾

slowlight93的专栏 603

UVa 1401 - Remember the Word(Trie + DP)

题意 给一个字符串,求几种方式组成,由给定的字典。 思路 这题纠结了好几天,一直想不懂是怎么递推的。 在今天早上的电路课上,终于灵光一闪。。。。 dp[i]表示从第i个开始的字符串,dp[i]=sum(i+len(x)),x是这个字符串的前缀。 用以前的版本的字典树竟然无限TLE!姿势都一样。。看来以后只能用lrj版的字典树了。 代码

一只冰熊 859

UVA 1401 Remember the Word (trie + dp)

第一次写trie, 看别人的代码看懂的,顺便学了一下dp。 #include #include #include #include #define mod 20071027; using namespace std; char str[300010], s[110]; int dp[300010]; struct Trie { int ch[400010][26]; i

Fungyow的博客 450

UVA - 1401 Remember the Word trie+DP

Remember the Word Since Jiejie can’t remember numbers clearly, he just uses sticks to help himself. Allowing for Jiejie’sonly 20071027 sticks,...

weixin_30778805的博客 126

UVA 1401 Remember the Word(Trie树 套 DP)

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

I good vegetable a! 373

Remember the Word UVA - 1401 (Trie+dp)

题意:         给你一个由N个单词组成的词典,和一个字符串S。问你S由N中的单词组成的方法有多少种?字典中的单词可以重复使用但是不可重叠。 分析:         令d[i] = x 表示S串的后缀[i,L-1]串有多少种构造方式.L = strlen(S).字符从0到L-1下标. d[i] = sum(d[i+len(x)]) 仅当[i,len(x-1)]区间正好是字典中的一个单...

sgh666666的博客 221

Remember the Word UVA - 1401(Trie+DP)

题目 蓝书上的一道题, 给出一个长的字符串后给出n个短的字符串,问将短的字符串组合成长的字符串有多少种组合。 就比如:a, b, cd, ad可以组成abcd的四种方式:a+b+cd, ab+cd。 思路 先用短的字符串构建成Trie树,也就是短的字符串的集合。 令d(i)表示从字符i开始的字符串( 即后缀s[i….n] )的分解方案数。 则d(i) = sum{ d(i+len(...

sunmaoxiang的博客 152
上一篇: 点分治
下一篇: 【模板】最长上升子序列
WA自动鸡
博客等级 码龄7年 10粉丝 35原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值