题解 P3370 【【模板】字符串哈希】

· · 题解

看到这么多hash,发一个用C++string暴力的题解

对于每一种字符串判断有多少个字符串与之相同,累加答案即可

用flag标记每个字符串是否在它之前已经有字符串与之相同,若相同就跳过

上代码

#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<math.h>
#include<string.h>
#include<stdlib.h>
#include<queue>
using namespace std;
string s[10010];
long long ans;
bool flag[10010];
int main()
{
     //freopen("1.in","r",stdin);
    // freopen("1.out","w",stdout);
    int n;
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
        cin>>s[i];
    for(int i=1;i<=n;i++)
    {
        if(flag[i]==1)
        {
            ans++;
            continue;
        }
        for(int j=i+1;j<=n;j++)
            if(s[i]==s[j])
            {
                flag[j]=1;
                flag[i]=1;
            }
    }
    printf("%lld",n-ans);
}