串是 
 串的一种合法补全的要求是:
串的括号是匹配的
串是
串的子序列
对于条件1,我们只需要用栈来记录括号是否匹配即可,对于条件 2 ,我们可以使用双指针来判断子序列。
时间复杂度 
赛后出题人感想:应该还是送分到位了
联合出题人:长郡中学 Werner_yin
//https://www.cnblogs.com/werner-yin/
#include <bits/stdc++.h>
#define WA puts("Wrong Answer")
#define AC puts("Accepted")
using namespace std;
const int MAXN = 5e5+10;
int T,n,m,top = 0;
char s[MAXN],t[MAXN<<1],stk[MAXN<<1];
bool ismatch(char *x,int l){
    top = 0;
    for(int i = 0;i < l;i++)
        if(x[i] == '(' || x[i] == '[') stk[++top] = x[i];
        else if(x[i] == ']') {if(stk[top] == '[') top--;else return 0;}
        else {if(stk[top] == '(') top--;else return 0;}
    if(top) return 0; return 1;
}
int main (){
    scanf("%d",&T);
    while(T--){
        scanf("%d %d",&n,&m);
        scanf("%s",s);scanf("%s",t);
        if(!ismatch(t,m)) {WA;continue;}
        int i,j;
        for(i = 0,j = 0;i < m;i++){
            if(s[j] == t[i]) j++;
            if(j == n) {AC;break;}
        }
        if(j != n) WA;
    }
    return 0;
} 
京公网安备 11010502036488号