[徐州网络赛]Longest subsequence

可以分成两个部分,前面相同,然后下一个字符比对应位置上的大。

枚举这个位置

用序列自动机进行s字符串的下标转移

注意最后一个字符

#include <bits/stdc++.h>

const int maxn = 1e6 + 7;
using namespace std;
#define ll long long
int n, m;
char s[maxn], t[maxn];
int nex[maxn][27]; void init() {
for (int k = 0; k < 26; ++k) nex[n][k] = -1;
for (int i = n; i >= 1; --i) {
for (int k = 0; k < 26; ++k) {
nex[i - 1][k] = nex[i][k];
}
nex[i - 1][s[i] - 'a'] = i;
}
} int main() {
ios::sync_with_stdio(false);
cin.tie(0);
cin >> n >> m;
cin >> s + 1 >> t + 1;
int minn;
int ans = 0;
int i, j;
init();
for (j = 0, i = 0; j <= m; ++j) {
minn = 1e9;
for (int k = max(0, t[j + 1] - 'a' + 1); k < 26; ++k) {
if (nex[i][k] != -1) {
minn = min(nex[i][k], minn);
}
}
if (minn != 1e9) {
ans = max(ans, n - minn + 1 + j);
}
if (j == m) break;
i = nex[i][t[j + 1] - 'a'];
if (i == -1) {
break;
}
}
if (ans == 0) {
cout << -1 << endl;
} else {
cout << ans << endl;
}
return 0;
}

最新文章

  1. 【C51】74HC573芯片
  2. 关于启明星系统移除apppath配置,让系统自动获取路径来设置cookie的解决方法
  3. 转载:Cellebrite携两大移动数据服务强势来华
  4. Java 使用jaxp添加节点
  5. Mysql 添加用户和数据库授权
  6. 读取xml并将节点保存到Excal
  7. JS,HTML,CSS
  8. 201521123004《Java程序设计》第6周学习总结
  9. 方格取数洛谷p1004
  10. NoSQL是什么?
  11. day050 django第一天 自定义框架
  12. .netcore webapi iis 虚拟目录下载apk文件
  13. nginx的一些基本功能
  14. Oracle PLSQL Demo - 02.SELECT INTO单行赋值[SELECT INTO variables]
  15. Mybatis之XML使用Enum枚举传递数据
  16. CentOS7.x使用yum安装Mysql5.6
  17. Vue单页面中进行业务数据的上报
  18. Chrome浏览器你可以选择知道的知识
  19. 个人作业4——alpha阶段个人总结(201521123103 吴雅娟)
  20. svn备份一般采用三种方式

热门文章

  1. C# 直接使用sql语句对数据库操作 (cmd.ExecuteNonQuery)
  2. 转: 十大Intellij IDEA快捷键
  3. Nim游戏(尼姆博弈)
  4. Sequence Models Week 2 Operations on word vectors
  5. java 微信红包算法代码实现及架构设计
  6. Mysql插入数据里有中文字符出现Incorrect string value的错误
  7. 题解 P1403 【[AHOI2005]约数研究】
  8. Java线程——线程之间的通信
  9. RaspBerry--解决无法用 ssh 直接以 root 用户登录
  10. ubuntu下安装ant