2020北京ICPC网络选拔赛Round1-J
十一月 03, 2020
给出一个字符串s和字符串t (长度均小于2000)
从他们中分别选出两个子序列x y
要求符合:
- x的字典序小于y
- 要求|x|+|y|最大
求|x|+|y|的最大值
x的字典序小于y当且仅当:
- x是y的前缀且|x|<|y|
- x不是y的前缀 且存在某个位置i 使得x和y的前i-1个字符相同 $x_i$<$y_i$
从s和t串中得到的x和y必须符合上述条件
发现无论哪种情况 都需要求出LongestCommonSequence($s_1$~$s_i$, $t_1$~ $t_j$)
对于第一种情况|x|+|y|的最大值=max{LCS($s_1$~$s_i$, $t_1$~ $t_j$)+$len_t-j$}
即x是y的前缀同时将$t_{j+1}$之后的字符全给归s
对于第二种情况当$s_i<t_j$时以这一位字符作为 x和y的位置 i (上文提到的位置 i )
|x|+|y|的最大值=max{LCS($s_1$~ $s_{i-1}$,$t_1$~$t_{j-1}$)+$len_t-j+1$+$len_s-i+1$}
1 |
|
查看评论