0分苣蒻,过样例了但是莫名其妙挂了
查看原帖
0分苣蒻,过样例了但是莫名其妙挂了
648772
Liyuqiao11楼主2023/9/6 20:04
#include<bits/stdc++.h>
using namespace std;
const int N = 3e4+10,md=1e7+7,B=131,M = 210;
int n,l,s,h[N][M],ans;
string s1;
map<int,int> mp[M];
int main(){
    queue<pair<int,int> > q;
    cin>>n>>l>>s;
    for(int i=1;i<=n;i++){
        cin>>s1;
        for(int j=1;j<=l;j++){
            h[i][j]=(h[i][j-1]*B+int(s1[j-1]))%md;
        }
        for(int j=1;j<l;j++){
            int dc=h[i][j-1]+h[i][l]-h[i][j+1]*pow(B,l-j-1);
            mp[j][dc]++;
            if(mp[j][dc]==2){
                q.push(make_pair(j,dc));
            }
        }
        int dc=h[i][l];
        mp[l][dc]++;
        if(mp[l][dc]==2){
            q.push(make_pair(l,dc));
        }
    }
    while(!q.empty()){
        int x=q.front().first,y=q.front().second;
        q.pop();
        ans=ans+mp[x][y]*(mp[x][y]-1)/2;
    }
    cout<<ans<<endl;
    return 0;
}
2023/9/6 20:04
加载中...