如题,用一种暴力哈希的做法也能做到77分。取连续的五位,取所有组合中字典序最小的位置。代码:
#include<bits/stdc++.h>
using namespace std;
int pos[11881380];
string s;
int n;
int main(){
cin>>n;
string k;
while(cin>>k)s+=k;
s+=s;
s+="zzzzz";
for(int i=0;i<n;i++){
pos[(s[i]-'a')*456976+(s[i+1]-'a')*17576+(s[i+2]-'a')*676+(s[i+3]-'a')*26+(s[i+4]-'a')]=i+1;
}
for(int i=0;i<=11881376;i++){
if(pos[i]){
cout<<pos[i]-1;
return 0;
}
}
}