题目名称 2011. [USACO Dec10]恐吓信
输入输出 thre_letter.in/out
难度等级 ★★★
时间限制 1000 ms (1 s)
内存限制 256 MiB
测试数据 11
题目来源 Gravatarcstdio 于2015-07-03加入
开放分组 全部用户
提交状态
分类标签
分享题解
通过:21, 提交:43, 通过率:48.84%
GravatarAAAAAAAAAA 100 0.000 s 0.00 MiB C++
Gravatarhyghb 100 0.023 s 8.97 MiB C++
GravatarHzoi_moyi 100 0.024 s 8.87 MiB C++
Gravatarassassain 100 0.033 s 11.23 MiB C++
GravatarAntiLeaf 100 0.034 s 10.98 MiB C++
GravatarTenderRun 100 0.035 s 11.00 MiB C++
Gravatarmikumikumi 100 0.035 s 11.09 MiB C++
GravatarFoolMike 100 0.036 s 10.97 MiB C++
GravatarZXCVBNM_1 100 0.037 s 11.23 MiB C++
Gravatarstdafx.h 100 0.040 s 11.74 MiB C++
关于 恐吓信 的近10条评论(全部评论)
复杂度不正确的sa被卡掉了。
GravatarCSU_Turkey
2018-02-21 11:47 6楼
SAM神速
GravatarAAAAAAAAAA
2017-07-03 22:25 5楼
只有我自己用SA吗?
Gravatar_Itachi
2017-02-16 07:55 4楼
注意SAM要开两倍空间,不然死得惨……
这里每次贪心地匹配最长的一段,失配后直接回rt即可,最后答案要加1
GravatarTenderRun
2016-07-26 13:38 3楼
Gravatarstdafx.h
2015-12-15 20:21 2楼
我用的后缀自动机……万古犇@Chenyao 用的后缀数组……
Gravatarcstdio
2015-07-04 16:18 1楼

2011. [USACO Dec10]恐吓信

★★★   输入文件:thre_letter.in   输出文件:thre_letter.out   简单对比
时间限制:1 s   内存限制:256 MiB

【题目描述】

$FJ$刚刚和邻居发生了一场可怕的争吵,他咽不下这口气,决定佚名发给他的邻居一封脏话连篇的信。他有无限张完全相同的已经打印好的信件,都包含 $N$个字母$(1 <= N <= 50,000)$。他想剪出其中一些并且粘帖成一个很长的字母串。

$FJ$太懒了,他想用最少的次数裁剪信件。他有一把举世无双的剪刀,他可以从一封信中只剪一刀剪出连续一段。同样,剪一刀可以得到整个完整的字符串。

他想知道他最少需要剪多少刀从而获得这封$M(1<=M<=50,000)$个字母的长信?

保证这总是可能的。 

考虑下面38个字母的信:
THEQUICKBROWNFOXDO 

GJUMPSOVERTHELAZYDOG 

以及FJ想要获得的9个字母的信: 

FOXDOG DOG 

以上是为了读入方便,实际上这两封信就是: 

THEQUICKBROWNFOXDOGJUMPSOVERTHELAZYDOG 

FOXDOGDOG 

由于FOXDOG已经存在了,$FJ$可以剪一刀得到FOXDOG。还剩下一个DOG,$FJ$可以选择其中任何一个DOG剪下来。

因此,他一共要剪2刀。

【输入格式】

第1行: 两个空格分隔的整数: $N, M$  

第2..?行: 一些行包含$N$个字母,$FJ$原来拥有的信,每行不会超过80个字母。  

第?...?行: 一些行包含$M$个字母,$FJ$想要写的信,每行不会超过80个字母。

【输出格式】

第1行: $FJ$获得他想要写的信所需要切的最少次数。

【样例输入】

38 9

THEQUICKBROWNFOXDO

GJUMPSOVERTHELAZYDOG

FOXDOG

DOG

【样例输出】

2

【来源】

J.Kuipers, 2002