How many HDU - 2609

最小表示法

传递性的巧妙应用

以前在牛客上做过类似的题目。
当时留下了很深刻的印象

#include<iostream>
#include<algorithm>
#include<cstring>
#include<set>
using namespace std;
typedef unsigned long long ull;
const ull base = 131;
const ull mod = 1e9+7;
const int max_n = 11000;

int getminstring(char s[]){
    int n = strlen(s);
    int i=0,j=1,k=0;
    while (i<n&&j<n&&k<n){
        if (s[(i+k)%n]==s[(j+k)%n])++k;
        else if (s[(i+k)%n]>s[(j+k)%n])i=i+k+1,k=0;
        else j=j+k+1,k=0;
        if (i==j)++j;
    }return min(i,j);
}

char s[110];
int main(){
    int n;
    while (~scanf("%d",&n)){
        set<ull> ans;
        for (int i=1;i<=n;++i){
            scanf("%s",s);
            int st = getminstring(s);
            int len = strlen(s);
            ull ha = 0;
            for (int i=st;i<st+len;++i)ha=(ha*base%mod+s[i%len])%mod;
            ans.insert(ha);
        }printf("%d\n",(int)ans.size());
    }
}
Kuangbin题单详解(kmpManacher) 文章被收录于专栏

刷Kuangbin题

全部评论

相关推荐

无情咸鱼王的秋招日记之薛定谔的Offer:好拒信,偷了,希望有机会用到
点赞 评论 收藏
分享
10-21 23:48
蚌埠坦克学院
csgq:可能没hc了 昨天一面完秒挂
点赞 评论 收藏
分享
今天 09:08
裁应届生,一分钱补偿没有,离职了还脑控你,跟踪你,定位你,丁东服务是搞系每一个人
牛客吹哨人:建议细说...哨哥晚点统一更新到黑名单:不要重蹈覆辙!25届毁意向毁约裁员黑名单https://www.nowcoder.com/discuss/1317104
叮咚买菜稳定性 8人发布 投递叮咚买菜等公司10个岗位 >
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务