为什么洛谷IDE和本地的运行结果不一样?
  • 板块灌水区
  • 楼主jzy_go
  • 当前回复2
  • 已保存回复2
  • 发布时间2022/11/28 22:33
  • 上次更新2023/10/27 01:03:03
查看原帖
为什么洛谷IDE和本地的运行结果不一样?
47205
jzy_go楼主2022/11/28 22:33

rt,P3370 【模板】字符串哈希

#include<stdlib.h>
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<bits/stdc++.h>
using namespace std;
inline long long read()
{
	long long x=0,f=1;
	char ch=getchar();
	while(ch<'0'||ch>'9')
	{
		if(ch=='-')
		f=-1;
		ch=getchar();
	}
	while(ch>='0'&&ch<='9')
	{
		x=x*10+(ch-'0');
		ch=getchar();
	}
	return x*f;
}
#define ull unsigned long long 
ull hash1[100001];
ull hash2[100001];
int cnt;
ull mod1=1e9+7;
ull mod2=1e9+9;
ull base=131;
ull power1[100001];
ull power2[100001];
void GetHash(string s)
{
	cnt++;
	int len=s.size()-1;
	for(int i=0;i<=len;i++)
	{
		hash1[cnt]+=int(s[i])*power1[i];
		hash2[cnt]+=int(s[i])*power2[i];
		hash2[cnt]%=mod2;
	}
}
void init()
{
	power1[0]=1;
	power2[0]=1;
	for(int i=1;i<=100000;i++)
	{
		power1[i]=power1[i-1]*base;
		power2[i]=power2[i-1]*base;
		power1[i]%=mod1;
		power2[i]%=mod2;
	}
}
map<pair<ull,ull>,int>m;
map<ull,int>m2;
int main()
{
	ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);
	string s1;
	int n=read();
	init();
	for(int i=1;i<=n;i++)
	{
		cin>>s1;
		GetHash(s1);
	}
	int ans=0;
	for(int i=1;i<=n;i++)
	{
		/*if(m[make_pair(hash1[i],hash2[i])]==0)
		{
			m[make_pair(hash1[i],hash2[i])]++;
			ans++;
		}*/
		if(m2[hash1[i]]==0)
		{
			m2[hash1[i]]++;
			ans++;
		}
	}
	cout<<ans<<endl;
	return 0;
}

数据:

10
xEDHx
xEDHx
xEDHx
xEDHx
W4Zp
S2omTcV
AZ3XG
Oo2Ws5
QdKKAJY
xEDHx

本地结果正常,输出6

IDE直接干出来个1

难绷

2022/11/28 22:33
加载中...