bzoj1030: [JSOI2007]文本生成器

2024-04-02 10:48

本文主要是介绍bzoj1030: [JSOI2007]文本生成器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

传送门:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1030

思路:直接算好像比较困难,所以考虑先算不可读的串的个数,再拿总串数去减。

不可读的串的数量就是在AC自动机上走M步而不经过结尾节点(包括结尾点和fail指向结尾点的节点)的路径条数。

这个怎么求呢?

设f[i][j]表示走i步,现在在j号节点的路径条数。

那么f[i][j]可以转移f[i+1][son[j][k]]。

就是i+1个字符为k的状态。

最后把所有f[m][i]累和就是不可读的串。


#include<cstdio>
#include<cstring>
#include<algorithm>
const int maxn=6000,maxm=105,mod=10007;
using namespace std;
int n,m,f[maxm][maxn],ans1=1,ans2;char s[maxn];struct AC_DFA{int tot,ch[maxn][26],fail[maxn],q[maxn],head,tail;bool dang[maxn];void insert(){int p=0,len=strlen(s);for (int i=0;i<len;p=ch[p][s[i]-'A'],i++) if (!ch[p][s[i]-'A']) ch[p][s[i]-'A']=++tot;dang[p]=1;}void getfail(){head=0,q[tail=1]=0,fail[0]=-1;while (head!=tail){int x=q[++head];for (int i=0;i<26;i++)if (ch[x][i]) q[++tail]=ch[x][i],fail[ch[x][i]]=x==0?0:ch[fail[x]][i];else ch[x][i]=x==0?0:ch[fail[x]][i];dang[x]|=dang[fail[x]];}}void work(){f[0][0]=1;for (int i=1;i<=m;i++)for (int j=0;j<=tot;j++){if (dang[j]) continue;for (int k=0;k<26;k++)f[i][ch[j][k]]=(f[i][ch[j][k]]+f[i-1][j])%mod;}for (int i=0;i<=tot;i++) if (!dang[i]) ans2+=f[m][i];for (int i=1;i<=m;i++) ans1=(ans1*26)%mod;printf("%d\n",((ans1-ans2)%mod+mod)%mod);}
}T;int main(){scanf("%d%d",&n,&m);for (int i=1;i<=n;i++) scanf("%s",s),T.insert();T.getfail(),T.work();return 0;
}


这篇关于bzoj1030: [JSOI2007]文本生成器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/869785

相关文章

Mybatis官方生成器的使用方式

《Mybatis官方生成器的使用方式》本文详细介绍了MyBatisGenerator(MBG)的使用方法,通过实际代码示例展示了如何配置Maven插件来自动化生成MyBatis项目所需的实体类、Map... 目录1. MyBATis Generator 简介2. MyBatis Generator 的功能3

通过C#获取PDF中指定文本或所有文本的字体信息

《通过C#获取PDF中指定文本或所有文本的字体信息》在设计和出版行业中,字体的选择和使用对最终作品的质量有着重要影响,然而,有时我们可能会遇到包含未知字体的PDF文件,这使得我们无法准确地复制或修改文... 目录引言C# 获取PDF中指定文本的字体信息C# 获取PDF文档中用到的所有字体信息引言在设计和出

Java操作xls替换文本或图片的功能实现

《Java操作xls替换文本或图片的功能实现》这篇文章主要给大家介绍了关于Java操作xls替换文本或图片功能实现的相关资料,文中通过示例代码讲解了文件上传、文件处理和Excel文件生成,需要的朋友可... 目录准备xls模板文件:template.xls准备需要替换的图片和数据功能实现包声明与导入类声明与

python解析HTML并提取span标签中的文本

《python解析HTML并提取span标签中的文本》在网页开发和数据抓取过程中,我们经常需要从HTML页面中提取信息,尤其是span元素中的文本,span标签是一个行内元素,通常用于包装一小段文本或... 目录一、安装相关依赖二、html 页面结构三、使用 BeautifulSoup javascript

Level3 — PART 3 — 自然语言处理与文本分析

目录 自然语言处理概要 分词与词性标注 N-Gram 分词 分词及词性标注的难点 法则式分词法 全切分 FMM和BMM Bi-direction MM 优缺点 统计式分词法 N-Gram概率模型 HMM概率模型 词性标注(Part-of-Speech Tagging) HMM 文本挖掘概要 信息检索(Information Retrieval) 全文扫描 关键词

纸牌函数生成器

此模板用来生成纸牌类的测试数据,本人手打,不合理或缀余的地方希望大神指出。 T=10000(测试数据组数), t (两摞相等的牌,每摞牌的数量); 每张牌用A,2~9,T,J,Q,K;表示牌面大小; 用S,H,C,D;表示花色。 共52张牌。 #include<stdio.h>#include<time.h>#include<stdlib.h>#include<string.

超越IP-Adapter!阿里提出UniPortrait,可通过文本定制生成高保真的单人或多人图像。

阿里提出UniPortrait,能根据用户提供的文本描述,快速生成既忠实于原图又能灵活调整的个性化人像,用户甚至可以通过简单的句子来描述多个不同的人物,而不需要一一指定每个人的位置。这种设计大大简化了用户的操作,提升了个性化生成的效率和效果。 UniPortrait以统一的方式定制单 ID 和多 ID 图像,提供高保真身份保存、广泛的面部可编辑性、自由格式的文本描述,并且无需预先确定的布局。

【生日视频制作】酒吧一群美女车展模特大屏幕视频改字AE模板修改文字软件生成器教程特效素材【AE模板】

生日视频制作教程酒吧一群美女车展模特大屏幕视频改字AE模板修改文字特效广软件告生成神器素材祝福玩法AE模板工程 怎么如何做的【生日视频制作】酒吧一群美女车展模特大屏幕视频改字AE模板修改文字软件生成器教程特效素材【AE模板】 生日视频制作步骤: 安装AE软件 下载AE模板 把AE模板导入AE软件 修改图片或文字 渲染出视频

使用亚马逊Bedrock的Stable Diffusion XL模型实现文本到图像生成:探索AI的无限创意

引言 什么是Amazon Bedrock? Amazon Bedrock是亚马逊云服务(AWS)推出的一项旗舰服务,旨在推动生成式人工智能(AI)在各行业的广泛应用。它的核心功能是提供由顶尖AI公司(如AI21 Labs、Anthropic、Cohere、Meta、Mistral AI、Stability AI以及亚马逊自身)开发的多种基础模型(Foundation Models,简称FMs)。