题目链接https://nanti.jisuanke.com/t/41395

题意:给两个字符串,s和t,在s中求字典序严格大于t的最长子序列。

思路:分类讨论即可。先建个s的序列自动机。

1 如果有字符大于t当前位置,那么后边的全都行。

2 如果有字符等于t当前位置,继续往后边匹配。

遍历过程更新答案最大值即可。注意还需要判断一下s的子序列和t串匹配相等的情况下是否有剩余。

#include <bits/stdc++.h>
#define ll long long
#define ull unsigned long long
#define met(a, b) memset(a, b, sizeof(a))
#define rep(i, a, b) for(int i = a; i <= b; i++)
#define bep(i, a, b) for(int i = a; i >= b; i--)
#define pb push_back
#define mp make_pair
#define debug cout << "KKK" << endl
#define ls num*2
#define rs num*2+1
#define re return
using namespace std;
const ll mod = 1e9 + 7;
const double PI = acos(-1);
const ll INF = 2e18+1;
const int inf = 1e9+5;
const double eps = 1e-7;
const int maxn = 1e6 + 5;
int ne[maxn][27];
char s[maxn], t[maxn];
int main(){
// ios::sync_with_stdio(false);
// cin.tie(0); cout.tie(0);
int n, m; scanf("%d%d",&n,&m);
scanf("%s %s", s+1, t+1);
rep(i, 0, 25) ne[n][i] = -1;
bep(i, n, 1){
rep(j, 0, 25) ne[i-1][j] = ne[i][j];
ne[i-1][s[i] - 'a'] = i;
}
int ans = -1, pos = 0;
rep(i, 1, m){
int x = t[i] - 'a';
rep(j, x+1, 25) if(~ne[pos][j]) ans = max(ans, i+n-ne[pos][j]);
pos = ne[pos][x];
if(pos == -1) break;
if(i == m && pos != n) ans = max(ans, m+n-pos);
}
cout << ans << endl;
return 0;
}

2019徐州网络赛 M Longest subsequence 序列自动机的更多相关文章

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

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

  2. ICPC 2019 徐州网络赛

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

  3. 2019徐州网络赛 I J M

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

  4. query 2019徐州网络赛(树状数组)

    query \[ Time Limit: 2000 ms \quad Memory Limit: 262144 kB \] 题意 补题才发现比赛的时候读了一个假题意.... 给出长度为 \(n\) 的 ...

  5. 2019徐州网络赛 I.query

    这题挺有意思哈!!!看别人写的博客,感觉瞬间就懂了. 这道题大概题意就是,给一串序列,我们要查找到l-r区间内,满足min(a[ i ],a[ j ]) = gcd(a[ i ],a[ j ]) 其实 ...

  6. The Preliminary Contest for ICPC Asia Xuzhou 2019 徐州网络赛 XKC's basketball team

    XKC , the captain of the basketball team , is directing a train of nn team members. He makes all mem ...

  7. 2019徐州网络赛 H.function

    题意: 先有\(n=p_1^{k_1}p_2^{k_2}\cdots p_m^{k_m}\),定义\(f(n)=k_1+k_2+\cdots+k_m\). 现在计算 \[ \sum_{i=1}^nf( ...

  8. 【树状数组】2019徐州网络赛 query

    (2)首先成倍数对的数量是nlogn级别的,考虑每一对[xL,xR](下标的位置,xL < xR)会对那些询问做出贡献,如果qL <= xL && qR >= xR, ...

  9. 2019徐州网络赛H :function (min25筛)

    题意:f(i)=i的幂次之和. 求(N+1-i)*f(i)之和. 思路:可以推论得对于一个素数p^k,其贡献是ans=(N+1)[N/(P^k)]+P^k(1+2+3...N/(P^k)); 我们分两 ...

  10. [2019徐州网络赛J题]Random Access Iterator

    题目链接 大致题意:从根节点出发,在节点x有son[x]次等概率进入儿子节点,求到达最深深度的概率.son[x]为x节点的儿子节点个数. 又又又又没做出来,心态崩了. 下来看了官方题解后发觉自己大体思 ...

随机推荐

  1. 部署及配置Mycat数据库中间件

    Mycat关键特性关键特性支持SQL92标准支持MySQL.Oracle.DB2.SQL Server.PostgreSQL等DB的常见SQL语法遵守Mysql原生协议,跨语言,跨平台,跨数据库的通用 ...

  2. UTT艾泰路由器默认口令(admin/admin)

    网络空间资产搜索: 登陆弱口令:admin/****** 登陆成功 End!!!

  3. windows系统PC设置多ip

    1.  打开  "[打开网络和共享中心]" 2 "更改适配器设置" 3."[本地连接]"-- "[属性]" 4.打开 [ ...

  4. 【python】python,PyQt5以及Qt designer的使用_做界面(用vscode)

    1.PyQt5和Qt designer准备 win+r       cmd       输入以下 python -m pip install -i http://pypi.douban.com/sim ...

  5. oracle表中增加字段sql

    declare v_Count1 int := 0; v_Count2 int := 0;begin select count(1) into v_Count1 from user_all_table ...

  6. JavaSSM

    Day1221 一.IT行业分类 前端 用户界面,眼睛能看到的,视觉效果比较. html5.css和css3.javascript.jquery.技术基础 bootstrap(css框架).vue.j ...

  7. 【摘】python和它的内置类型子类化

    python和它的内置类型子类化 看个好玩的东西 class Folder(list): def __init__(self, name): self.name = name def dir(self ...

  8. 高并发解决方案之 redis 分布式锁

    背景:秒杀服务中要写一个定时任务:活动到期时给order微服务发送关闭订单的通知.这需要改变数据库表中的数据,而集群中服务是多节点的方式进行部署,会出现并发执行的情况,所以采用的redis的分布式锁的 ...

  9. 后端返回字符流,前端处理进行excel文件导出操作

    针对于这种的文件导出,最关键的是响应类型的设置,也就是responseType的设置(responseType:"arraybuffer"或者responseType:" ...

  10. Java mysql查询数据库重复数据(单个或多个字段)

    查询表重复数据: SELECT * FROM 表1 f WHERE (f.字段1,f.字段2) in (SELECT 字段1,字段2 FROM 表1 GROUP BY 字段1,字段2 HAVING c ...