博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
洛谷 P4112 [HEOI2015]最短不公共子串 解题报告
阅读量:4317 次
发布时间:2019-06-06

本文共 857 字,大约阅读时间需要 2 分钟。

P4112 [HEOI2015]最短不公共子串

题目描述

在虐各种最长公共子串、子序列的题虐的不耐烦了之后,你决定反其道而行之。

一个串的“子串”指的是它的连续的一段,例如bcd是abcdef的子串,但bde不是。

一个串的“子序列”指的是它的可以不连续的一段,例如bde是abcdef的子串,但bdd不是。

下面,给两个小写字母串A,B,请你计算:

(1) A的一个最短的子串,它不是B的子串

(2) A的一个最短的子串,它不是B的子序列

(3) A的一个最短的子序列,它不是B的子串

(4) A的一个最短的子序列,它不是B的子序列

输入输出格式

输入格式:

有两行,每行一个小写字母组成的字符串,分别代表A和B。

输出格式:

输出4行,每行一个整数,表示以上4个问题的答案的长度。如果没有符合要求的答案,输出-1

说明

对于20%的数据,A和B的长度都不超过20

对于50%的数据,A和B的长度都不超过500

对于100%的数据,A和B的长度都不超过2000


四合一还行。

问题1

建立B的后缀自动机

枚举A的开头,然后在B上从S向后跑,失配了更新答案

问题2

建立B的序列自动机

然后一样的

问题3

在B的后缀自动机上跑DP(这样才能处理A的子序列)

具体的\(dp_i\)表示这个点可以匹配上的最短长度

从头开始枚举每个点更新。

问题4

在B的序列自动机上跑,其他和三一样

数据太水,3,4的dp01背包写成完全背包也可以过...

我3的dp写的是假的,懒得改了..


Code:

#include 
#include
const int N=4010;const int inf=0x3f3f3f3f;char s1[N],s2[N];int n,dp[N];int min(int x,int y){return x

2019.1.7

转载于:https://www.cnblogs.com/butterflydew/p/10233113.html

你可能感兴趣的文章
开发日志三
查看>>
如何用Maven创建web项目(具体步骤)
查看>>
MetadataType来帮助entity framework自动生成的代码进行标注
查看>>
快速幂
查看>>
Java学习——读写txt文件
查看>>
查看apk函数
查看>>
python自然语言处理学习笔记1
查看>>
java插入排序
查看>>
Django doc summary (4)
查看>>
Object-C——内存管理
查看>>
解决for循环里面产生相同随机数的问题
查看>>
Java常量池详解之一道比较蛋疼的面试题
查看>>
HDU1021
查看>>
剑指Offer——替换空格
查看>>
剑指Offer——数据流中的中位数
查看>>
python模拟用户登录爬取阳光采购平台数据
查看>>
linux 发现交换文件 ".swp"
查看>>
描述Cookie和Session的作用,区别和各自的应用范围,Session工作原理
查看>>
ACM学习历程——POJ3295 Tautology(搜索,二叉树)
查看>>
51nod 1295 XOR key-区间异或最大值-可持久化01Trie树(模板)
查看>>