本文主要是介绍洛谷3370 字符串哈希,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述
如题,给定N个字符串(第i个字符串长度为Mi,字符串内包含数字、大小写字母,大小写敏感),请求出N个字符串中共有多少个不同的字符串。
友情提醒:如果真的想好好练习哈希的话,请自觉,否则请右转PJ试炼场:) 输入输出格式 输入格式:第一行包含一个整数N,为字符串的个数。
接下来N行每行包含一个字符串,为所提供的字符串。
输出格式:
输出包含一行,包含一个整数,为不同的字符串个数。
字符串哈希模板题。
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define UI unsigned int
#define UL unsigned long long
int p=13331;
struct str
{UI x;UL y;bool operator < (const str &ss) const{if (x!=ss.x) return x<ss.x;return y<ss.y;}
}a[10010];
char s[1510];
int n;
int main()
{int i,j,k,l,q,x,y,z,ans=0;scanf("%d",&n);for (i=1;i<=n;i++){scanf("%s",s+1);l=strlen(s+1);for (j=1;j<=l;j++){a[i].x=a[i].x*p+s[j];a[i].y=a[i].y*p+s[j];}}sort(a+1,a+n+1);for (i=1;i<=n;i++)if (i==1||(a[i-1]<a[i]))ans++;printf("%d\n",ans);
}
这篇关于洛谷3370 字符串哈希的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!