可能的奇怪溢出或者下标越界求助
  • 板块CF25E Test
  • 楼主紊莫turtle
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/2/12 09:30
  • 上次更新2023/10/24 01:02:02
查看原帖
可能的奇怪溢出或者下标越界求助
443675
紊莫turtle楼主2023/2/12 09:30

MnZn初学字符串hash,参考了题解,主体部分如下:

int ans=inf;
string s[4];
unsigned long long p[N],ha[N],hb[N];
void init(){ p[0]=1; F(i,1,N-5) p[i]=p[i-1]*B; }
unsigned long long H(int l,int r){return l?ha[r]-ha[l-1]*p[r-l+1]:ha[r]; }
void Hash(string a,string b){
	ha[0]=a[0]-'a';hb[0]=b[0]-'a';
	F(i,1,a.length()-1) ha[i]=ha[i-1]*B+a[i]-'a';
	F(i,1,b.length()-1) hb[i]=hb[i-1]*B+b[i]-'a';
}
string f(string a,string b){
	Hash(a,b);
	if(b.length()<=a.length()){
		F(i,0,a.length()-b.length()+1)
			if(H(i,i+b.length()-1)==hb[b.length()-1])
				return a;
	}
	dF(i,min(a.length(),b.length())-1,1)
		if(H(a.length()-i,a.length()-1)==hb[i-1]){
			string rt=a;F(j,i,b.length()-1) rt=rt+b[j];
			return rt;
		}
	return a+b;
}

但是WA在了样例1,如果我每次函数都memset一下就能过,但是CF上TLE。求助是我哪里写假了吗?

2023/2/12 09:30
加载中...