在自己电脑上输出测试数据是6,为什么在洛谷评测机上是1?

P3370 【模板】字符串哈希

```cpp using namespace std; #define ull unsigned long long const int MAXN=10010; const ull base=10007; char getin[MAXN][MAXN]; ull hash[MAXN]; ull bit[MAXN]; void get_hash(int a,int l){ for(int b=1;b<=l;b++){ if(getin[a][b]>='0'&&getin[a][b]<='9')hash[a]+=(getin[a][b]-'0'+1)*bit[b]; else{ if(getin[a][b]>='a'&&getin[a][b]<='z')hash[a]+=(getin[a][b]-'a'+11)*bit[b]; else if(getin[a][b]>='A'&&getin[a][b]<='Z')hash[a]+=(getin[a][b]-'A'+37)*bit[b]; } } } int search(int a){ for(int b=a-1;b>=1;b--){ if(hash[a]==hash[b]){ return 0; } } return 1; } int main(){ bit[0]=1; for(int a=1;a<=MAXN;a++)bit[a]=bit[a-1]*base; int n,total=0; int a,b; cin>>n; char ch; for(a=1;a<=n;a++){ cin>>getin[a]; get_hash(a,b); total+=search(a); } cout<<total; return 0; } ```
by meisr @ 2018-06-08 13:50:58


|