QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#753830#9568. Left Shifting 3Magical_Kingdom#WA 5ms5868kbC++171.4kb2024-11-16 13:42:272024-11-16 13:42:28

Judging History

你现在查看的是最新测评结果

  • [2024-11-16 13:42:28]
  • 评测
  • 测评结果:WA
  • 用时:5ms
  • 内存:5868kb
  • [2024-11-16 13:42:27]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e5 + 7;
int n, k;
string s;
int nxt[maxn * 2];

void get_next() {
    for (int i = 2, j = 0; i <= 2 * n; i++) {
        while (j && s[j + 1] != s[i]) {
            j = nxt[j];
        }
        if (s[j + 1] == s[i]) {
            j++;
        }
        nxt[i] = j;
    }
}

int cnt[maxn * 2];
void kmp() {
    int len = 7;
    string s2 = "#nanjing";
    for (int i = 1, j = 0; i <= n * 2; i++) {
        while (j && s2[j + 1] != s[i]) {
            j = nxt[j];
        }
        if (s2[j + 1] == s[i]) {
            j++;
        }
        if (j == len) {
            cnt[i - j + 1]++;
        }
    }
}

int sum[maxn * 2];

void init() {
    for (int i = 0; i <= 2 * n + 3; i++) {
        nxt[i] = 0;
        cnt[i] = 0;
        sum[i] = 0;
    }
}

void solve() {
    cin >> n >> k;
    init();
    cin >> s;
    if (n < 7) {
        cout << 0 << '\n';
        return;
    }
    s = " " + s + s;
    get_next();
    kmp();
    for (int i = 1; i <= n * 2; i++) {
        sum[i] = sum[i - 1] + cnt[i];
    }

    int ans = 0;
    for (int l = 1; l <= min(k + 1, n); l++) {
        int r = l + n - 1;
        ans = max(ans, sum[r - 6] - sum[l - 1]);
    }
    cout << ans << '\n';
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int t;
    cin >> t;
    while (t--) {
        solve();
    }
    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 1ms
memory: 5848kb

input:

4
21 10
jingicpcnanjingsuanan
21 0
jingicpcnanjingsuanan
21 3
nanjingnanjingnanjing
4 100
icpc

output:

2
1
3
0

result:

ok 4 number(s): "2 1 3 0"

Test #2:

score: -100
Wrong Answer
time: 5ms
memory: 5868kb

input:

2130
39 7
nnananjingannanjingngnanjinganjinggjina
1 479084228
g
33 2
gqnanjinggrjdtktnanjingcvsenanjin
24 196055605
ginganjingnanjingnanjing
23 3
ngnanjinganjingjinnanji
40 3
njingaaznannanjingnananjingyonwpnanjinga
40 207842908
nanjinggphconanjingkonanjinannanjinglxna
46 3
ingjingnnanjingnanjinging...

output:

2
0
3
2
2
2
3
2
3
4
0
1
4
3
1
1
1
1
2
1
0
4
3
0
0
1
0
0
0
5
4
0
1
1
1
1
2
0
1
1
2
3
1
3
2
0
1
2
4
1
2
1
0
0
2
4
0
2
0
0
1
1
3
2
2
1
0
3
1
1
1
1
4
4
1
1
1
1
0
1
1
1
1
3
0
4
3
3
1
1
2
1
1
1
1
5
1
4
0
1
1
1
3
4
2
3
2
2
0
2
2
1
3
1
1
0
0
0
0
5
0
1
0
2
0
0
2
2
2
2
1
2
0
1
1
2
2
4
2
3
2
0
1
1
2
1
2
1
0
3
...

result:

wrong answer 1st numbers differ - expected: '3', found: '2'