被卡,求调
查看原帖
被卡,求调
964960
hs_Wjz楼主2024/1/28 20:02
#include<bits/stdc++.h>
using namespace std;
string str;
unsigned long long hash1[30010][205],po[30010],hash2[30010][205];
int hashh[30010];int a,b,c;
void has(int i,string s){
    for(int j=0;j<b;j++){
        hash1[i][j]=hash1[i][j-1]*233+s[j];
    }
    for(int j=b-1;j;j--){
        hash2[i][j]=hash2[i][j+1]*211+s[j];
    }
}
int main(){
    #ifndef ONLINE_JUDGE
        freopen("in.in","r",stdin);
    #endif
    ios::sync_with_stdio(false);
    cin.tie(0),cout.tie(0);
    cin>>a>>b>>c;
    for(int i=1;i<=a;i++){
        cin>>str;
        has(i,str);
    }
    int ans=0;
    for(int i=0;i<b;i++)
    {
        for(int j=1;j<=a;j++)
        {
            hashh[j]=hash1[j][i-1]*131+hash2[j][i+1]*137;
        }
        stable_sort(hashh+1,hashh+1+a);
        int num=1;
        for(int j=2; j<=a; j++) 
        {
            if(hashh[j]==hashh[j-1])ans+=num,num++;
            else num=1;
        }
    }
    cout<<ans;
}
2024/1/28 20:02
加载中...