Codeforces Round #704 (Div. 2), problem: (C) Maximum width还是要多学习

Problem - C - Codeforces

看清题目要求, 最重要部分在第二段. 大佬最后给出的代码果然简单, 思路简单化, 未必非要把答案在一个大括号里全部完成, 两个指针同时跑,中间加了一堆判断处理, 反而不如返璞归真, 简单清晰为后面改代码也省了很多力气

AC代码

#include <iostream>
#include <algorithm>

using namespace std;

typedef long long LL;
const int N = 2e5+10;
int q[N], h[N];

int main(){
    
    int n, m;
    string s1, s2;
    cin >> n >> m >> s1 >> s2;
    int res = 0;
    
    for(int i = 0, j = 0; i < n; i ++) 
        if(s1[i] == s2[j]) q[j ++] = i;
        
    for(int i = n-1, j = m-1; i >= 0; i --) 
        if(s1[i] == s2[j]) h[j --] = i;
        
    for(int i = 0; i < m; i ++)    res = max(res, h[i+1]-q[i]);
    cout <<res <<endl;
    return 0;
}
原文地址:https://www.cnblogs.com/la-la-wanf/p/15546229.html