[徐州网络赛]Longest subsequence

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

枚举这个位置

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

注意最后一个字符

  1. #include <bits/stdc++.h>
  2. const int maxn = 1e6 + 7;
  3. using namespace std;
  4. #define ll long long
  5. int n, m;
  6. char s[maxn], t[maxn];
  7. int nex[maxn][27];
  8. void init() {
  9. for (int k = 0; k < 26; ++k) nex[n][k] = -1;
  10. for (int i = n; i >= 1; --i) {
  11. for (int k = 0; k < 26; ++k) {
  12. nex[i - 1][k] = nex[i][k];
  13. }
  14. nex[i - 1][s[i] - 'a'] = i;
  15. }
  16. }
  17. int main() {
  18. ios::sync_with_stdio(false);
  19. cin.tie(0);
  20. cin >> n >> m;
  21. cin >> s + 1 >> t + 1;
  22. int minn;
  23. int ans = 0;
  24. int i, j;
  25. init();
  26. for (j = 0, i = 0; j <= m; ++j) {
  27. minn = 1e9;
  28. for (int k = max(0, t[j + 1] - 'a' + 1); k < 26; ++k) {
  29. if (nex[i][k] != -1) {
  30. minn = min(nex[i][k], minn);
  31. }
  32. }
  33. if (minn != 1e9) {
  34. ans = max(ans, n - minn + 1 + j);
  35. }
  36. if (j == m) break;
  37. i = nex[i][t[j + 1] - 'a'];
  38. if (i == -1) {
  39. break;
  40. }
  41. }
  42. if (ans == 0) {
  43. cout << -1 << endl;
  44. } else {
  45. cout << ans << endl;
  46. }
  47. return 0;
  48. }

[徐州网络赛]Longest subsequence的更多相关文章

  1. ICPC 2019 徐州网络赛

    ICPC 2019 徐州网络赛 比赛时间:2019.9.7 比赛链接:The Preliminary Contest for ICPC Asia Xuzhou 2019 赛后的经验总结 // 比赛完才 ...

  2. 2018 ICPC 徐州网络赛

    2018 ICPC 徐州网络赛 A. Hard to prepare 题目描述:\(n\)个数围成一个环,每个数是\(0\)~\(2^k-1\),相邻两个数的同或值不为零,问方案数. solution ...

  3. 计蒜客 41391.query-二维偏序+树状数组(预处理出来满足情况的gcd) (The Preliminary Contest for ICPC Asia Xuzhou 2019 I.) 2019年徐州网络赛)

    query Given a permutation pp of length nn, you are asked to answer mm queries, each query can be rep ...

  4. 2019徐州网络赛 I J M

    I. query 比赛时候没有预处理因子疯狂t,其实预处理出来因子是\(O(nlog(n))\)级别的 每个数和他的因子是一对偏序关系,因此询问转化为(l,r)区间每个数的因子在区间(l,r)的个数 ...

  5. 2019icpc徐州网络赛

    A Who is better? 题意 excrt+斐波那契博弈 分析 Java的BigInteger对象默认为null,不能直接比较. 代码 import java.math.BigInteger; ...

  6. 2019 徐州网络赛 M Longest subsequence t

    对于答案来说,一定是 前 i-1 个字符和 t的前 i 个一样,然后第 i 个字符比 t的 大 \(i\in [1,m]\) 前缀为t,然后长度比t长 对于第一种情况,枚举这个 i ,然后找最小的 p ...

  7. 徐州网络赛F-Feature Trace【暴力】

    Morgana is learning computer vision, and he likes cats, too. One day he wants to find the cat moveme ...

  8. ACM-ICPC2018徐州网络赛 Features Track(二维map+01滚动)

    Features Track 31.32% 1000ms 262144K   Morgana is learning computer vision, and he likes cats, too. ...

  9. 徐州网络赛B-BE,GE or NE【记忆化搜索】【博弈论】

    In a world where ordinary people cannot reach, a boy named "Koutarou" and a girl named &qu ...

随机推荐

  1. UIWindow的那些事

    UIView是视图的基类,UIViewController是视图控制器的基类,UIResponder是表示一个可以在屏幕上响应触摸事件的对象: 一.UIWindow是一种特殊的UIView,通常在一个 ...

  2. 第42章 AWR报表的使用

    第42章 AWR报表的使用exec dbms_gather.gather_table_stats('scott','emp');exec dbms_gather_gather_index_stats( ...

  3. day24(024-多线程(上))

    ###24.01_多线程(多线程的引入)(了解) 1.什么是线程 线程是程序执行的一条路径, 一个进程中可以包含多条线程 多线程并发执行可以提高程序的效率, 可以同时完成多项工作 2.多线程的应用场景 ...

  4. Golang---sort包

    Sort 包介绍 Go 语言标准库 sort 包中实现了几种基本的排序算法:插入排序.快速排序和堆排序,但是在使用 sort 包进行排序时无需具体考虑使用哪种排序方式,因为该方法会根据传入的排序的数据 ...

  5. promise核心6 自定义promise

    1.定义整体结构(不写实现) 定义一个自己的promise的库 lib(库的简写) 一个js文件.一个js模块(不能用es6  也不能commjs)(用es5模块语法 ) 匿名函数自调用.IIFE ( ...

  6. POJ 1840:Eqs 哈希求解五元方程

    Eqs Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 14169   Accepted: 6972 Description ...

  7. 洛谷 P2719 搞笑世界杯

    题目传送门 解题思路: f[i][j]表示买i张A票,j张B票的概率. AC代码: #include<iostream> #include<cstdio> using name ...

  8. Arduino串口的一些高级用法

    1.配置串口通信数据位.校验位.停止位通常我们使用Serial.begin(speed)来完成串口的初始化,这种方式,只能配置串口的波特率.而使用Serial.begin(speed, config) ...

  9. Maven:Failure executing javac, but could not parse the error:javac: 无效的目标发行版: 1.8

    eclipse中对着项目maven——>>maven install时出现错误:Failure executing javac, but could not parse the error ...

  10. SQL基础教程(第2版)第2章 查询基础:2-1 SELECT语句基础

    ● 通过指定DISTINCT可以删除重复的行.● 为列设定显示用的别名. ■列的查询 通过 SELECT 语句查询并选取出必要数据的过程称为查询(query). 该 SELECT 语句包含了 SELE ...