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

看到$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

bzoj5147bzoj2121loj6701 字符串游戏相关推荐

  1. .net mvc actionresult 返回字符串_字符串游戏之无效的身份证

    出场人物介绍 小美:小学4年级学生,参加了学校的编程兴趣小组,已经了解了Python语言的基本语法,能够看懂一些简单的程序.她做事风风火火,对所有的事情都很好奇,喜欢打破砂锅问到底,是一个叫人又爱又恨 ...

  2. python 路径拼接字符串_字符串游戏之拼接字符串

    出场人物介绍 小美:小学4年级学生,参加了学校的编程兴趣小组,已经了解了Python语言的基本语法,能够看懂一些简单的程序.她做事风风火火,对所有的事物都很好奇,喜欢打破砂锅问到底,是一个叫人又爱又恨 ...

  3. bzoj2121 字符串游戏

    题目链接:bzoj2121 题目大意: BX正在进行一个字符串游戏,他手上有一个字符串L,以及其他一些字符串的集合S,然后他可以进行以下操作:对于一个在集合S中的字符串p,如果p在L中出现,BX就可以 ...

  4. bzoj 2121 字符串游戏

    BX正在进行一个字符串游戏,他手上有一个字符串L,以及其他一些字符串的集合S,然后他可以进行以下操作:对于一个在集合S中的字符串p,如果p在L中出现,BX就可以选择是否将其删除,如果删除,则将删除后L ...

  5. bzoj 2121 字符串游戏(字符串dp)

    Description BX正在进行一个字符串游戏,他手上有一个字符串L,以及其他一些字符串的集合S,然后他可以进行以下操作:对于一个在集合S中的字符串p,如果p在L中出现,BX就可以选择是否将其删除 ...

  6. 【2022 省选训练赛 Contest 17 A】字符串游戏(结论)

    字符串游戏 题目链接:2022 省选训练赛 Contest 17 A 题目大意 有一个字符串一开始是空的,两个人轮流操作在任意位置插入 0/1. 然后给你一个串 s,先手目标是使得 s 是字符串的子串 ...

  7. python身份证的秘密_Python算法之旅字符串游戏之身份证号的秘密

    最近在力扣(LeetCode)网闲逛,发现很多题目的官方题解都是用Python语言来描述的,这说明大家已经逐渐认识到Python语言描述算法的优越性:它语法简明,内置函数丰富,表述直截了当,可以用最简 ...

  8. 大漠插件ocr多选字库_易语言大漠插件模块制作设置字库及Ocr识别字符串游戏识别文字...

    识字找字是大漠插件最核心的东西,通过识别游戏画面中的文字返回坐标完成鼠标点击等动作,识字必须先制作字库,设置字库,本课演示了如何设置字库,如何调用字库,封装的大漠命令有:SetDict.UseDict ...

  9. 易语言大漠插件模块制作设置字库及Ocr识别字符串游戏识别文字

    识字找字是大漠插件最核心的东西,通过识别游戏画面中的文字返回坐标完成鼠标点击等动作,识字必须先制作字库,设置字库,本课演示了如何设置字库,如何调用字库,封装的大漠命令有:SetDict.UseDict ...

最新文章

  1. python 怎么报错后再次启动?
  2. css hot loader,解决安装react-hot-loader后修改css/less文件不会热更新问题
  3. 编译FreeNOS报/usr/lib/grub/i386-pc/modinfo.sh doesn‘t exist错误
  4. 安卓案例:View动画——弹球碰壁
  5. JavaScript 败北,TypeScript 大势所趋?
  6. firefox登录国际账户
  7. Java基础-SSM之Spring的AOP编程
  8. onselect与onselectstart 禁止选中
  9. (仅对于普通12分频的51单片机而言)机器周期,时钟周期,晶振振荡频率(fosc)的关系;(51、32通用)分频的原理和作用
  10. Vim下快速删除字符串
  11. 自己写个基金分析系统,准确率也太高了
  12. 七段数码管的使用(使能端分时控制)
  13. Python 使用 matplotlib 将离散的节点用光滑曲线连接
  14. 【windows10】将路由器设置为交换机
  15. 超全荒地UE4素材网站整理
  16. python数据爬取、分析与内容审核基于PaddlePaddle
  17. 将u盘插入apple苹果系统后发现再插入window系统发现无法新建文件夹或者文件,新建new功能消失了
  18. SQL SERVER 数据库delete 未加where 条件数据误删恢复办法
  19. 欣瑞达一分钟教程,如何接RS232/RS485线
  20. CASS道路横断面线,如何折线变直线?

热门文章

  1. mysql备份七牛云存储_定时备份 Mysql并上传到七牛的方法
  2. 用python画一只可爱的皮卡丘_用python画一只可爱的皮卡丘实例
  3. Linux 命令之 compress -- unix 档案压缩命令
  4. Linux 命令之 locate -- 文件查找工具(查找文件/搜索文件)
  5. 太阳能板如何串联_光伏板清洁专用的清洁毛刷
  6. springboot jwt token前后端分离_「转」七个开源的 Spring Boot 前后端分离项目,建议收藏加转载...
  7. python控制其它软件_从另一个脚本控制python脚本
  8. php mysql刷新表格_php读入mysql数据并以表格形式显示(表单实现无刷新提交)
  9. 铺铜过孔不要十字_谈谈商周青铜器上圈足的镂孔现象
  10. python账号密码一一对应_python模拟用户登录系统,如何两个用户输入各自的密码才能登入?...