社区讨论
求助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 条回复,欢迎继续交流。
正在加载回复...