社区讨论

求助WA0pts,有的数据能过,有的就过不了

P2375[NOI2014] 动物园参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@lobff12i
此快照首次捕获于
2023/10/29 20:07
2 年前
此快照最后确认于
2023/11/04 01:39
2 年前
查看原帖
代码:
CPP
#include <bits/stdc++.h>

using namespace std;

const long long N=1e6+7,MOD=1e9+7;

long long T,n;
string s;
long long nxt[N],ans[N];
long long ans_final=1;

inline void getnext(){
	nxt[0]=-1;
	int i=1,j=0;
	while(i<n){
		while(s[i]^s[j]&&(~j)) j=nxt[j];
		
		i++,j++,nxt[i]=j,ans[i]=ans[j]+1;
 	}
}
//abbcab

inline void getnum(){
	int i=1,j=0;
	while(i<n){
		while(s[i]^s[j]&&(~j)) j=nxt[j];
		while((j<<1)>=i) j=nxt[j];
		i++,j++;
  		if(~j) ans_final=1ll*ans_final*(ans[j]+1)%MOD;
		
	}
}

int main(){
	cin>>T;
	while(T--){
		cin>>s;
		n=s.length();
		memset(nxt,0,sizeof(nxt));
		memset(ans,0,sizeof(ans));
		ans[1]=1;
		ans_final=1;
		
		getnext();
		getnum();
		cout<<ans_final<<endl;
	}
	return 0;
}

回复

0 条回复,欢迎继续交流。

正在加载回复...