GYM 101981E(开关反转性质)

时间:2019-07-03 00:18:27   收藏:0   阅读:105

要点

/*GYM 101981 E*/
#include <cstdio>
#include <string>
using namespace std;

const int maxn = 1e6 + 5;
int n, k;
char s[maxn], t[maxn];
pair<int, int> q[maxn];

string solve(char *s) {
    int tail = 0;
    q[tail] = {-1, 0};
    for (int i = 1; i <= n; i++) {
        q[++tail].first = s[i];
        q[tail].second = (s[i] == q[tail - 1].first) ? q[tail - 1].second + 1 : 1;
        if (q[tail].second == k)    tail -= k;
    }
    string res = "";
    for (int i = 1; i <= tail; i++)
        res += q[i].first;
    return res;
}

int main() {
    scanf("%d %d %s %s", &n, &k, s + 1, t + 1);
    puts(solve(s) == solve(t) ? "Yes" : "No");
}

原文:https://www.cnblogs.com/AlphaWA/p/11123845.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!