bzoj5147bzoj2121loj6701 字符串游戏

做不出来杂题,到处找题做

看到$loj$上新出了一道题,觉得很神仙不错,

还记得Censoring吗(一个AC自动机的题)

这个题求最优解,数据范围$150$

题解

数据范围非常小,首先贪心肯定不行,考虑AC自动机上$dp$?

好吧其实是区间$dp$

一个直接的想法是维护$f[l][r]=0/1$表示是否可以清空$l$,$r$这一段子段

然而转移起来很难转移,考虑再定义一个数组$g[l][r][i][w]=0/1$表示是否可以清成第$i$个模式串的前$w$位

考虑$g$转移,

1.直接匹配$g[l][r][i][w]|=g[l][r-1][i][w-1]$其中主串$str[r]==c[i][w]$表示若$l,r-1$可以清成第$i$个模式串前$w-1$位那么若当前两个可以匹配上必然$l,r$可以清成第$i$个模式串前$w$位

2.由几部分拼凑$g[l][r][i][w]|=g[l][q-1][i][w]\&f[q][r]$表示$q-r$被清空那么$g$显然可以转移

那么根据$f$定义$f[l][r]|=g[l][r][i][len[i]]$

举个例子$momooo$ 模式串$moo$

先$g[3][5][1][3]=1$,得$f[3][5]=1$得$g[1][5][1][2]=1$(由$f[3][5]$)转移 再进行一步匹配$f[3][6][1][3]=1$得$f[1][6]=1$可以全部清空

那么$ans$根据类似最长上升子序列求

$ans[i]=min(ans[i-1]+1,ans[l-1](f[l][i]==1))$两层循环枚举

考虑炸内存?

状压,怎么状压,压掉一维,这里不再解释,因为数据点足够水,这已经足以通过测试点

代码

#include<bits/stdc++.h>
using namespace std;
#define A 152
#define ll long long
ll len[A],ans[A];
bool f[A][A],g[A][A][52][52];
ll n,cnt;
char c[A][A],str[A];
int main(){scanf("%s",str+1);n=strlen(str+1);scanf("%lld",&cnt);for(ll i=1;i<=cnt;i++){scanf("%s",c[i]+1);len[i]=strlen(c[i]+1);}for(ll i=1;i<=n;i++){f[i][i-1]=1;for(ll j=1;j<=cnt;j++){g[i][i-1][j][0]=1;}}for(ll k=1;k<=n;k++){//枚举当前长度for(ll l=1;l<=n-k+1;l++){ll r=l+k-1;for(ll w=1;w<=cnt;w++){for(ll now=1;now<=len[w];now++){if(c[w][now]==str[r])g[l][r][w][now]|=g[l][r-1][w][now-1];}for(ll now=1;now<=len[w];now++){for(ll i=l;i<=r;i++){g[l][r][w][now]|=g[l][i-1][w][now]&f[i][r];}}}for(ll w=1;w<=cnt;w++)f[l][r]|=g[l][r][w][len[w]];}}for(ll i=1;i<=n;i++){ans[i]=ans[i-1]+1;for(ll j=1;j<=i;j++){if(f[j][i]){ans[i]=min(ans[i],ans[j-1]);}}}printf("%lld\n",ans[n]);
}
View Code

 

转载于:https://www.cnblogs.com/znsbc-13/p/11579220.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/349477.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

7个相同小球4个不同盒子_【计算启蒙】4个游戏陪娃玩懂“数拆分”,加减法都不用愁!...

前几天我们整理了能锻炼孩子“数-量匹配”知识的家庭生活小游戏&#xff1a;7个家庭数-量匹配小游戏&#xff0c;让孩子摆脱“机械数数”&#xff01;​mp.weixin.qq.com所以今天&#xff0c;助教就来分享一些借助实物的“数拆分”小游戏吧&#xff01;已经学会数量对应&#x…

python怎么使用预训练的模型_Keras使用ImageNet上预训练的模型方式

我就废话不多说了&#xff0c;大家还是直接看代码吧&#xff01; import keras import numpy as np from keras.applications import vgg16, inception_v3, resnet50, mobilenet #Load the VGG model vgg_model vgg16.VGG16(weightsimagenet) #Load the Inception_V3 model in…

NOIP模拟测试49·50「养花·折射·画作·施工·蔬菜·联盟」

一套题 养花 题解 分块\主席树 这里我用的是主席树 查询分段$1-(k-1)$找最大的,能向右找就向右找 for(ll nowl1,nowrk-1;nowl<maxx;nowlk,nowrk,nowrmin(nowr,maxx)){if(ansmod-1) break;chose(rt[r],rt[l-1],nowl,nowr,1,maxx);} 复杂度分析,调和级数$√n*log(n)$ 代码 #in…

宏任务和微任务执行顺序_确保任务的执行顺序

宏任务和微任务执行顺序有时有必要对线程池中的任务施加一定的顺序。 JavaSpecialists通讯的第206期提出了一种这样的情况&#xff1a;我们使用NIO从多个连接中读取数据。 我们需要确保来自给定连接的事件按顺序执行&#xff0c;但是不同连接之间的事件可以自由混合。 我想提出…

c语言中aver是什么意思_Linux系统top命令中的io使用率,到底是什么意思?

最近在做连续数据流的缓冲系统&#xff0c;C语言代码实现后&#xff0c;粗略测试了下&#xff0c;功能上应该没有问题。那么&#xff0c;接下来就该测试性能了。输入 top 命令&#xff0c;的确可以看到一系列 cpu 使用率&#xff0c;其中一个值得注意的子项就是 io 使用率了&am…

wireshark捕获选项不能用_wireshark的一些基础用法,欢迎收藏

About WiresharkWireshark是世界上最重要和使用最广泛的网络协议分析器。它让您在微观层次上看到网络上正在发生的事情&#xff0c;并且是许多商业和非营利性企业、政府机构和教育机构事实上(通常也是法律上)的标准。Wireshark的发展得益于全球网络专家的志愿贡献&#xff0c;并…

管理沟通-沟通框架

背景 管理三明治的承托&#xff0c;管理沟通。离开了沟通&#xff0c;所有的工作都将搁浅而无法前进。 常见话题&#xff1a; 向上沟通员工激励团队凝聚力提升向下沟通工作特点 工作职责说明技术开发计算机&#xff0c;编程语言&#xff0c;设计算法&#xff0c;开发功能&#…

t’触发器真值表和状态方程_清写出触发器按逻辑特性的分类;写出T触发器的状态方程。...

下列对配电所的说法有误的一项是()。A&#xff0e;市区10kV公用配电所的供电半径一般不大于300m&#xff0c;在郊区的供成功的基础设施服务的提供者都首先是按照商业化的原则经营的&#xff0c;并至少具有几个基本特点&#xff0c;这些基本特我国幅员辽阔&#xff0c;能源分布不…

NetBeans 9抢先体验

Java 9即将来临&#xff0c;NetBeans 9也即将来临。在本文中&#xff0c;我们将看到NetBeans 9 Early Access为开发人员提供的支持&#xff0c;以帮助他们构建Java 9兼容的应用程序。 Java 9提供了许多&#xff08;大约90种&#xff09; 新功能&#xff0c;包括Modules和JShel…

块裁剪后的矩形边界如何去掉_手持拍摄画面太抖?这节课教你如何快速稳定抖动的画面...

手持相机进行拍摄&#xff0c;画面会有较为明显的抖动&#xff0c;这节课就教大家如何稳定视频画面。素材导入到PR后&#xff0c;为素材添加变形稳定器效果&#xff0c;软件会自动开始分析。当前素材上方会显示在后台分析&#xff0c;这时候我们可以剪辑其他部分&#xff0c;并…

怎么把空字符串去掉_Python知识点字符串转整数需注意

↑↑↑关注后"星标"简说Python人人都可以简单入门Python、爬虫、数据分析简说Python严选 来源&#xff1a;简说Python 作者&#xff1a;老表One old watch, like brief python大家好&#xff0c;我是老表&#xff5e;Python知识点系列&#xff0c;学习了记得点赞、…

tree

随机走,看期望 由于zzn过于sb,考试推出来式子因为统计时间不对没有$AC$(应dfs前统计) zzn实在过于sb,式子和题解完全不一样,所以看题解的可以走了 记录tofa[x]表示当前点走到父亲期望步数 可以直接走到父亲 贡献$\frac{1}{deg[x]}$ 走到儿子再走到父亲$\frac{1}{deg[x]}*(1tofa…

android-x86 镜像iso下载_Windows 10(1909)最新12月更新版MSDN官方简体中文原版ISO镜像下载+激huo工ju...

微软已于11月中旬开始大规模推送Windows 10操作系统的最新版本1909。此次更新官方未放出具体更新日志&#xff0c;但没有太多大功能更新&#xff0c;主要还是“修修补补”为主。现在&#xff0c;为大家带来本次官方最新原版ISO镜像下载&#xff0c;具体内部版本号为18363&#…

32查运行内存的map文件_Spark Shuffle调优之调节map端内存缓冲与reduce端内存占比

本文首先介绍Spark中的两个配置参数: spark.shuffle.file.buffer map端内存缓冲 spark.shuffle.memoryFraction reduce端内存占比很多博客会说上面这两个参数是调节Spark shuffle性能的利器&#xff0c;实际上并不是这样的。以实际的生产经验来说&#xff0c;这两个参数没…

element ui 表单验证为正整数

很多时候都会用表单中输入正整数的情况&#xff0c;在element ui中可以用el-input-number 标签来显示输入框是number类型的&#xff0c;或者type"number"也可以的&#xff0c;但是正整数就需要判断了 可以利用正则来判断 代码如下 <el-form ref"checkData&qu…

python用input输入列表_Python如何使用input函数获取输入

所谓输入&#xff0c;就是用代码获取用户通过键盘输入的信息。 例如&#xff1a;去银行取钱&#xff0c;在 ATM 上输入密码。 在 Python 中&#xff0c;如果要获取用户在键盘上的输入信息&#xff0c;需要使用到input()函数。 函数input()让程序暂停运行&#xff0c;等待用户输…

web.xml.jsf_使用JSF 2.0可以更轻松地进行多字段验证

web.xml.jsf开发应用程序表单时最常见的需求之一是多字段验证&#xff08;或跨字段验证&#xff0c;但我没有使用此术语&#xff0c;因为当我将其放在Google上时&#xff0c;实际上得到了一些战后图片&#xff09;。 我正在谈论的情况是&#xff0c;我们需要比较初始日期是早于…

odoo self.ensure_one()

源码&#xff1a; def ensure_one(self): """ Verifies that the current recorset holds a single record. Raises an exception otherwise. """ try: # unpack to ensure there is only one value is faster than len when…

模板 字段_劲爆新功能:轻流文字识别(OCR)功能支持自定义识别模板啦

Hi&#xff0c;又和大家见面啦&#xff5e;前段时间我们的文字识别(OCR)功能推出后&#xff0c;由于只支持系统提供的固定识别模板&#xff0c;很多客户跟我们反馈说&#xff1a;希望可以自定义识别模板&#xff01;现应大家的要求&#xff0c;轻流「文字识别(OCR)」的「自定义…

中文字符频率统计python_python统计字符串出现最多的字母及其出现次数

统计字符串出现最多的字母及其出现次数 另外如果次数相同按字母顺序排序。 方法1 可以使用自定义键对c.most_common()进行排序&#xff0c;该键首先考虑频率的降序&#xff0c;然后考虑字母的降序&#xff08;请注意lambda x: (-x[1], x[0]) &#xff09;&#xff1a; from col…