Introduction

每次在一开始为空的串$S$的任意位置插入串$p$

给出最终的$S$,求长度最短(相同时字典序最小)的串$p$

Solution:

样例出锅差评啊,让我这种直接看样例选手挂掉50分啊……

所以说不管怎么样都要好好看输入/输出格式,看看有没有多测

非常直观的思路就是$O(len^2)$枚举所有$S$的子串进行判断

暴力的话就是每次选择一个$p$将其删去并继续递归下去

同时对于随机的点可以直接上贪心:每次直接删去第一个$p$

接下来考虑满分算法

首先$O(len^2)$对$p$的枚举无法优化,只能优化判断的过程

发现每个串$p$被分为几段后,中间的每一段都是独立完整的一段

那么一段的合法性取决于其是否能分成几段合法段且剩下的组成当前字符串的前缀

这样将问题拆分后就可以$dp$了,用$dp[l][r]$来表示区间$[l,r]$是否合法,转移如下:

1、$r$属于最外层的串$p$:$dp[l][r]=dp[l][r-1]\&s[r]==sub[(r-l) mod len+1]$

2、$r$在完整的段中:$dp[l][r]=dp[l][r-len*k]\&dp[r-len*k+1][r]$

这样的转移明显不太容易递推,因此用记忆化搜索处理,复杂度上界为$O(len^4)$

不过这其实是一个很松的上界,首先$p$的长度必须为$len$的约数

同时可以对字符集个数判断(虽然我没写),而且由于是记忆化搜索状态数达不到$O(len^2)$

Tips:$string$在未赋值时长度为0,不能访问$string[i]$来赋值,是越界行为,要先$resize()$!

Code:

#include <bits/stdc++.h>

using namespace std;
#define X first
#define Y second
typedef long long ll;
typedef pair<int,int> P;
typedef double db;
const int MAXN=;
string s,sub,res;
int len,T,dp[MAXN][MAXN],cur; int solve(int l,int r)
{
if(l>r) return ;
if(~dp[l][r]) return dp[l][r]; for(int mid=r-cur;mid>=l;mid-=cur)
if(solve(l,mid)&&solve(mid+,r))
return dp[l][r]=;
if(s[r-]==sub[(r-l)%cur]) return dp[l][r]=solve(l,r-);
return dp[l][r]=;
} int main()
{
cin>>T;
while(T--)
{
bool f=;cin>>s;len=s.size();
for(cur=;cur<=len;cur++)
if(len%cur==)
{
for(int j=;j<=len-cur;j++)
{
sub=s.substr(j,cur);
memset(dp,-,sizeof(dp));
if(solve(,len))
res=f?min(res,sub):sub,f=;
}
if(f){cout<<res<<endl;break;}
}
}
return ;
}

Review:

最近看了几篇文章感觉对动规有了更多的理解

动规其实是一种通过状态的定义和转移方程将问题拆成多个子问题来解决的一种思想

实现方式究竟是递推还是记忆化搜索式的递归其实与其拆分问题的思想无关,用方便的即可

比如思考此题的心路历程:

发现合法字符串的性质,通过定义$dp[l][r]$根据性质将问题拆分写出转移方程

发现转移方程用递归的形式更容易实现,用记忆化搜索解决

[ZROI #316] ZYB玩字符串的更多相关文章

  1. [JZOJ6347]:ZYB玩字符串(DP+记忆化搜索)

    题目描述 $ZYB$获得了一个神秘的非空字符串$p$. 初始时,串$S$是空的. $ZYB$会执行若干次这样的操作: $1.$选取$S$中的一个任意的位置(可以是最前面或者最后面) $2.$在这个位置 ...

  2. [JZOJ6347] 【NOIP2019模拟2019.9.8】ZYB玩字符串

    题目 题目大意 有一个字符串\(p\).一开始字符串\(s\)为空串. 接下来进行若干次操作:在\(s\)的某个空隙中插入\(p\). 给出操作后的\(s\),问长度最小的\(p\). 思考历程 感觉 ...

  3. 正睿OI 提高 Day1T3 ZYB玩字符串(DP)

    题目链接 设可能的答案串为p,长为len.p一定是s的一个子串且len|n. 虽然一些p在s中可能被断成若干段,但删掉其中的若干段后,这段区间一定会被全部消掉. 于是枚举p后,可以用f[i][j]表示 ...

  4. CF1107E Vasya and Binary String

    比赛的时候又被垃圾题艹翻了啊. 这个题显然是区间dp 考虑怎么转移. 类似消除方块和ZYB玩字符串那样的一个DP. 可以从左到右依次考虑消除. dp[l][r][k][flag]表示区间l,r左边粘着 ...

  5. [考试反思]1113csp-s模拟测试113:一念

    在这么考下去可以去混女队了2333 两天总分rank14,退役稳稳的 的确就是没状态.满脑子都是<包围保卫王国>ddp/LCT/ST,没好好考试. 我太菜了写题也写不出来考试也考不好(显然 ...

  6. 2019.11.12&13题解

    写在前面: 虽然拿到了rk1,但是T3被卡常TLE90分,(考后再交就A了!?),lemon80,又丢失了一次良好的AK机会, 掐头去尾距离联赛仅剩2天,最近中午一直睡不好,可能是有些紧张, 希望自己 ...

  7. NOIP前一些题目的理解

    ZYB和售货机(图论,环) 题目链接 个人感觉这道题与基环树没有任何关系,你会发现,每个点最多只有一个入度和出度,所以只能是链或环. 还有就是本题的突破点就在于正确建图,题目的限制保证每个点的入度不大 ...

  8. NOIP模拟57

    前言 一整套都是水题(尽管 T4 稍有难度.. 从各位的分数上就可以看出来..Max 的 T1 打挂了,不然就有人 AK 了.. 感觉还好,最后还有 1h 看了看 T4 ,感觉有一点思路,就瞎 jb ...

  9. Noip模拟53 2021.9.14

    T1 ZYB和售货机 首先这道题有两种做法. 一种是发现每个点都可以先被取到只剩一个,只要收益大于$0$ 然后发现建一个$i->f[i]$的图时出现环,要把它去掉, 那么跑一个$tarjan$枚 ...

随机推荐

  1. Spring Cloud全家桶主要组件及简要介绍

    一.微服务简介 微服务是最近的一两年的时间里是很火的一个概念.感觉不学习一下都快跟不上时代的步伐了,下边做一下简单的总结和介绍. 何为微服务?简而言之,微服务架构风格这种开发方法,是以开发一组小型服务 ...

  2. CodeForces - 1016B

    You are given two strings ss and tt, both consisting only of lowercase Latin letters. The substring  ...

  3. CMDB概述(一)

    浅谈ITIL TIL即IT基础架构库(Information Technology Infrastructure Library, ITIL,信息技术基础架构库)由英国政府部门CCTA(Central ...

  4. xshell5破解版下载

    http://www.pc6.com/softview/SoftView_507840.html

  5. django框架<二>

    django框架:   Models 1.基本创建 Django提供了一个抽象层("Model")的构建和管理Web应用程序的数据. Django使用一种新的方式,即:关系对象映射 ...

  6. myeclipse/eclipse安装反编译插件jadclipse

    jad是一个使用比较广泛的Java反编译软件,jadClipse是jad在eclipse下的插件,下面像大家介绍下如何将jadclipse加入到myeclipse/eclipse中. 文件下载 (1) ...

  7. centos上git搭建

    1 git的安装需要一些包: yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-Ex ...

  8. 设置NGINX进程分配至多核CPU提升性能

    Nginx 配置文件 nginx.conf 首先需要找到 Nginx 的配置文件 nginx.conf 才能进行下面的操作,在LNMP一键安装包默认配置下,nginx.conf 存放在/usr/loc ...

  9. xss 过滤

    一. xss过滤 用户通过Form获取展示在终端, 提交数据,Form验证里面加入xss验证(对用户提交的内容验证是否有关键标签) from django.conf.urls import url f ...

  10. Delphi 中的自动释放策略

    来自万一老师的博客:http://www.cnblogs.com/del/archive/2011/12/21/2295794.html ------------------------------- ...