QOJ.ac

QOJ

时间限制: 2.5 s 内存限制: 768 MB 总分: 100

#7238. 两个字符串

统计

给定两个由小写字母组成的字符串 $S = S_0S_1 \dots S_{|S|-1}$ 和 $T = T_0T_1 \dots T_{|T|-1}$。其中 $|S|$ 表示字符串 $S$ 的长度。

字符串 $S = S_0S_1 \dots S_{|S|-1}$ 的子串 $S[l, r]$ ($0 \le l \le r < |S|$) 定义为字符串 $S_lS_{l+1} \dots S_r$。

对于字符串 $S$ 和两个整数 $l, r$,定义函数 $F(S, l, r)$ 如下:

$$F(S, l, r) = r - l - \max(l, |S| - r - 1) + 1$$

换句话说,$F$ 等于子串的长度减去子串到 $S$ 边界的最大距离。

你的任务是找到一个子串 $S[l, r]$,使得它在 $T$ 中作为子串出现,并且在所有满足条件的二元组 $(l, r)$ ($0 \le l \le r < |S|$) 中,$F(S, l, r)$ 的值最大。

输入格式

输入的前两行分别包含字符串 $S$ 和 $T$ ($1 \le |S|, |T| \le 10^6$)。 字符串 $S$ 和 $T$ 均由小写英文字母组成。

输出格式

如果字符串 $S$ 的任何子串都没有在字符串 $T$ 中出现,输出一行 “-1 -1”。否则,输出两个整数 $l$ 和 $r$,使得 $F(S, l, r)$ 在所有可能的二元组 $(l, r)$ ($0 \le l \le r < |S|$) 中最大,且 $S[l, r]$ 是 $T$ 的子串。如果存在多个满足条件的二元组,输出字典序最小的那一个。

样例

样例输入 1

riveragesmalir
toaxernaturaln

样例输出 1

4 5

样例输入 2

aaaaa
aaaaa

样例输出 2

0 4

样例输入 3

amkar
zenit

样例输出 3

-1 -1

说明

如果 $l_1 < l_2$,或者 $l_1 = l_2$ 且 $r_1 < r_2$,则称二元组 $(l_1, r_1)$ 字典序小于二元组 $(l_2, r_2)$。

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
#149EditorialOpen题解jiangly2025-12-12 23:32:33View

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.