请求加强数据
查看原帖
请求加强数据
378467
Windy_YY楼主2024/7/14 13:07

我暴力哈希都过了(大雾

using ull = unsigned long long;
ull h[N], bit[N];
string acr[N];
const ull bas = 13331;
ull gethash(int l, int r) {
    return h[r] - h[l - 1] * bit[r - l + 1];
}
__gnu_pbds::gp_hash_table<ull, int> mp;
bool box[N];
void solveqwq() {
    int n, q, ss = 0;
    cin >> q;
    for (int i = 1; i <= q; ++i)
        cin >> acr[i];
    string s;
    cin >> s;
    n = s.size();
    s = ' ' + s;
    bit[0] = 1;
    for (int i = 1; i < N; ++i)
        bit[i] = bit[i - 1] * bas;
    for (int i = 1; i <= n; ++i)
        h[i] = h[i - 1] * bas + s[i];
    for (int i = 1; i <= q; ++i) {
        string t = acr[i];
        ull tmp = 0;
        for (auto &x : t)
            tmp = tmp * bas + x;
        if (box[t.size()])
            ss += mp[tmp];
        else {
            box[t.size()] = 1;
            for (int i = 1, j = t.size(); j <= n; ++i, ++j)
                mp[gethash(i, j)] = 1;
            ss += mp[tmp];
        }
    }
    printf("%lld\n", ss);
}
2024/7/14 13:07
加载中...