我是靠谱客的博主 简单银耳汤,最近开发中收集的这篇文章主要介绍牛客网暑期ACM多校训练营(第三场)E Sort String【字符串hash】,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

E Sort String:
常数卡到爆。。。前向星写到爆就是比不过vector。。。
hash过后,直接模拟就行,正解好像是KMP,总之卡到爆。。。

#pragma GCC optimize ("O3")
#include <bits/stdc++.h>
using namespace std;

typedef unsigned long long ull;
const int MAXN = 2e6 + 10;
ull base = 213;
ull has[MAXN], a[MAXN];
char str[MAXN];
int len, T, cnt = 0;

vector<int> G[MAXN];
unordered_map<ull , int> mp;

inline void init() {
    a[0] = 1, has[0] = 1;
    for(int i = 1; i < MAXN; ++i) a[i] = a[i - 1] * base;
    int res = 0;
    for(int i = 1; i < len + len; ++i) {
        has[i] = has[i - 1] * base + str[i];
        if(i >= len) {
            ull tot = has[i] - has[i - len] * a[len];
            if(!mp[tot]) mp[tot] = ++res;
            G[mp[tot]].push_back(i - len);
        }
    }
    printf("%dn", res);
    for(int i = 1; i <= res; ++i) {
        int lenth = G[i].size();
        printf("%d", lenth);
        for(int j = 0; j < lenth; ++j) {
            printf(" %d", G[i][j]);
        }
        printf("n");
    }
}

int main() {
    scanf("%s", str + 1);
    len = strlen(str + 1);
    for(int i = len + 1; i <= len + len; ++i) str[i] = str[i - len];
    init();
    return 0;
}

最后

以上就是简单银耳汤为你收集整理的牛客网暑期ACM多校训练营(第三场)E Sort String【字符串hash】的全部内容,希望文章能够帮你解决牛客网暑期ACM多校训练营(第三场)E Sort String【字符串hash】所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(59)

评论列表共有 0 条评论

立即
投稿
返回
顶部