Logo Wy Online Judge

WyOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#467#90. 「NOIP2020」字符串匹配Pigsyy00ms0kbC++232.2kb2025-04-24 20:45:582025-04-24 20:45:58

answer

#include <cstdio>
#include <cmath>
#include <cstring>
#include <algorithm>
#include <stack>
#include <vector>
#include <queue>
#define ll long long
//#define int ll
using namespace std;
inline int read() {
    int d = 0, f = 1;
    char x = getchar();

    while (x < '0' || x > '9') {
        if (x == '-') {
            f = -1;
        }

        x = getchar();
    }

    while (x >= '0' && x <= '9') {
        d = (d << 1) + (d << 3) + (x - 48);
        x = getchar();
    }

    return d * f;
}
int z[3000010], cnt1[50], cnt2[50], sum[50], n, cnt, now, res, tot, ret;
ll ans;
char s[3000010];
void Z_function(char *s, int len) {
    z[0] = len - 1;

    for (int i = 1, l = -1, r = -1; i < len; i++) {
        if (i <= r)
            z[i] = min(z[i - l], r - i + 1);
        else
            z[i] = 0;

        while (i + z[i] < len && s[z[i]] == s[i + z[i]])
            z[i]++;

        if (i + z[i] > r)
            l = i, r = i + z[i] - 1;
    }
}
int T;
signed main() {
    freopen("string.in", "r", stdin);
    freopen("string.out", "w", stdout);
    T = read();

    while (T--) {
        scanf("%s", s);
        n = strlen(s);
        memset(sum, 0, sizeof(sum));
        memset(cnt1, 0, sizeof(cnt1));
        memset(cnt2, 0, sizeof(cnt2));
        ans = ret = cnt = 0;

        for (int i = 0; i < n; i++)
            cnt1[s[i] - 'a'] ^= 1;

        for (int i = 0; i < 26; i++)
            cnt += cnt1[i];

        Z_function(s, n);
        now = cnt, res = tot = 0;

        for (int i = 1; i < n; i++) {
            if (cnt1[s[i - 1] - 'a'])
                tot -= sum[now--];
            else
                tot += sum[++now];

            cnt1[s[i - 1] - 'a'] ^= 1;
            int k = min(z[i], n - i - 1) / i + 1;
            int c1 = k - (k >> 1), c2 = k >> 1;
            ans += 1ll * tot * c1;

            if (cnt2[s[i - 1] - 'a'])
                res--;
            else
                res++;

            cnt2[s[i - 1] - 'a'] ^= 1;
            sum[res]++;
            ans += 1ll * ret * c2;

            if (res <= now)
                tot++;

            if (res <= cnt)
                ret++;
        }

        printf("%lld\n", ans);
    }

    return 0;
}

详细

小提示:点击横条可展开更详细的信息

Test #1:

score: 0
Dangerous Syscalls

input:

5
jjjjjjjjjj
lllllllcyg
mgmgmgmgmg
nycqtnycqt
tdutduwyga

output:


result:


Test #2:

score: 0
Dangerous Syscalls

input:

5
hhhhhhhhhh
iiiiiiibkw
dgdgdgdgdg
ffffffffyf
ffzffzwsnw

output:


result:


Test #3:

score: 0
Dangerous Syscalls

input:

5
rrrrrrrrrr
iiiiiiiwzr
dididididi
wwwwzqcjvv
mbymbyhgpc

output:


result:


Test #4:

score: 0
Dangerous Syscalls

input:

5
cccccccccc
lllllllket
tututututu
ccbuxccbux
pnppnpnlwl

output:


result:


Test #5:

score: 0
Dangerous Syscalls

input:

5
uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuubgmwdgmgwvqvkbcvih...

output:


result:


Test #6:

score: 0
Dangerous Syscalls

input:

5
llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllsuqtxhunfvotmxfqeb...

output:


result:


Test #7:

score: 0
Dangerous Syscalls

input:

5
nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnkvpnzxdkdhjucliujh...

output:


result:


Test #8:

score: 0
Dangerous Syscalls

input:

5
ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppphytnmeyelaxegcuzq...

output:


result:


Test #9:

score: 0
Dangerous Syscalls

input:

5
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss...

output:


result:


Test #10:

score: 0
Dangerous Syscalls

input:

5
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss...

output:


result:


Test #11:

score: 0
Dangerous Syscalls

input:

5
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr...

output:


result:


Test #12:

score: 0
Dangerous Syscalls

input:

5
jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj...

output:


result:


Test #13:

score: 0
Dangerous Syscalls

input:

5
eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee...

output:


result:


Test #14:

score: 0
Dangerous Syscalls

input:

5
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv...

output:


result:


Test #15:

score: 0
Dangerous Syscalls

input:

5
eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee...

output:


result:


Test #16:

score: 0
Dangerous Syscalls

input:

5
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc...

output:


result:


Test #17:

score: 0
Dangerous Syscalls

input:

5
dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd...

output:


result:


Test #18:

score: 0
Dangerous Syscalls

input:

5
uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu...

output:


result:


Test #19:

score: 0
Dangerous Syscalls

input:

5
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss...

output:


result:


Test #20:

score: 0
Dangerous Syscalls

input:

5
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr...

output:


result:


Test #21:

score: 0
Dangerous Syscalls

input:

5
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

output:


result:


Test #22:

score: 0
Dangerous Syscalls

input:

5
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss...

output:


result:


Test #23:

score: 0
Dangerous Syscalls

input:

5
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq...

output:


result:


Test #24:

score: 0
Dangerous Syscalls

input:

5
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc...

output:


result:


Test #25:

score: 0
Dangerous Syscalls

input:

5
hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh...

output:


result: