UOJ Logo

NOI.AC

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#213805#2411. 三元组jsxheng50526ms79300kbC++111.8kb2024-11-13 20:06:412024-11-13 23:04:45

answer

#include<bits/stdc++.h>
#define int long long
using namespace std;
namespace IO{
	template<typename T> inline void read(T &x){
		bool f=1;x=0;char ch=getchar();
		while(ch<'0'||ch>'9'){if(ch=='-')f=0;ch=getchar();}
		while(ch>='0'&&ch<='9')x=(x<<1)+(x<<3)+(ch&15),ch=getchar();
		x=f?x:-x;
	}
	template<typename T> inline void write(T x){
		if(x<0) putchar('-'),x=-x;
	   	if(x>9) write(x/10);
	   	putchar(('0'+x%10));
	}
	template <typename T,typename ...Args> inline void read(T &x,Args &...args){read(x);read(args...);}
	template<typename T> inline void write(T x,char c){write(x),putchar(c);}
}
using namespace IO;
const int mod=998244353;
int n,L,len[1000005],sum[5][2000050];
char s[1000005],str[1000005];
void init(){
	memset(sum,0,sizeof(sum));
	n=strlen(s);
	str[0]='@',str[1]='#';
	for(int i=0;i<n;i++)str[i*2+2]=s[i],str[i*2+3]='#';
	L=n*2+2,str[L]=0; 
}
void manacher(){
	int mx=0,id;
	for(int i=1;i<L;i++){
		if(mx>i)len[i]=min(len[2*id-i],mx-i);
		else len[i]=1;
		while(str[i+len[i]]==str[i-len[i]])len[i]++;  
		if(len[i]+i>mx)mx=len[i]+i,id=i;
	}
}
void add(int op,int l,int r,int num){
	if(l>r)return ;
	sum[op][l]+=num;
	sum[op][l]%=mod;
	sum[op][r+1]-=num;
	sum[op][r+1]%=mod;
}
signed main(){
	int T;
	read(T);
	while(T--){
		cin>>s;
		init();
		manacher();
		for(int i=L-1;i>=1;--i)add(1,i-len[i]+1,i,i),add(2,i-len[i]+1,i,1);
		for(int i=1;i<L;i++)add(3,i,i+len[i]-1,i),add(4,i,i+len[i]-1,1);
		for(int i=1;i<L;i++){
			for(int j=1;j<=4;j++){
				sum[j][i]+=sum[j][i-1];
				sum[j][i]=(mod+sum[j][i])%mod;
			}
		}
		int ans=0;
		for(int i=2;i<L-2;i+=2){
			int A,B;
			A=((sum[1][i+2]-sum[2][i+2]*((i+2)/2))%mod+mod)%mod;
			B=((sum[3][i]-sum[4][i]*(i/2))%mod+mod)%mod;
			ans+=(A*B)%mod,ans%=mod;
		}
		write(ans,'\n');
	}
	return 0;
}

详细

小提示:点击横条可展开更详细的信息

Test #1:

score: 10
Accepted
time: 92ms
memory: 79288kb

input:

10
kyynjrttqngurtcvcjnnuqmstrntnpghrqqqp
lqfnqzykyzzynqnqyywzzwwfnyzlwykznyfhyknfnk
fuhjuhhuhuqjuuqu...

output:

27169
35530
31188
37732
65217
28457
133147
22985
43141
10759

result:

ok 10 lines

Test #2:

score: 10
Accepted
time: 94ms
memory: 79288kb

input:

10
eedleeeldeededlllleldleeeleleddleellele
kllrnnjqjniqqknjmlfcirjyrycfrkyqqjrky
uksfueafjuarusziepe...

output:

66808
20895
14900
37820
39914
38054
29364
37426
38775
29747

result:

ok 10 lines

Test #3:

score: 10
Accepted
time: 92ms
memory: 79284kb

input:

10
aaqzqvvvvzaqvazzvqqzqzavaaavvqaqqqvaqavvavvaavzvqzavaqvzvaazavqavazzvqvqazzvzvqqaqaaqqazqaqqzzzza...

output:

6230886
3556080
11774834
3833447
8206626
3621091
5300328
6484259
3025216
18509610

result:

ok 10 lines

Test #4:

score: 10
Accepted
time: 122ms
memory: 79300kb

input:

10
bsppzzcusncccbbpgguszngssnzncsnzpppbpuuczgcbucpupcubbzubsncncpbgbuzungnznsnpncpbugzcpguungzgcnbng...

output:

559443824
305794405
414279981
912202469
497470943
263140764
422669314
204178180
579056344
460822521

result:

ok 10 lines

Test #5:

score: 10
Accepted
time: 126ms
memory: 79300kb

input:

10
pzrpbfgjbnqhbpzohubzunqjnujfbfgazjqeaqhjgppqnogagegebuebhbeoeboouoojhbhaahjooggrozeephgqfrzrfrpjz...

output:

442803205
483459867
245377898
502317569
156660068
301473465
396310915
489306288
862513697
753896393

result:

ok 10 lines

Test #6:

score: 0
Time Limit Exceeded

input:

100000
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...

output:

341665830
471661
1999742
543480
459540
202296822
191363172
1241848
713235
369157
575809
170913820
68...

result:


Test #7:

score: 0
Time Limit Exceeded

input:

10000
iqtuiwnrdznudrwdznuwoyhzhhmiqytqhdqjuhihyuyrmwqurmdzdwiidomqrihqrjzyjwytjhznuwuhiojnhiduhytjir...

output:

452745570
395658802
415729637
581286624
608938037
896800719
444684505
913683462
444333468
228535301
...

result:


Test #8:

score: 0
Time Limit Exceeded

input:

1000
sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss...

output:

845573779
254782300
56185577
239721206
427653199
812292186
496897443
160197728
268511769
327773907
7...

result:


Test #9:

score: 0
Time Limit Exceeded

input:

100
yuuxiorshssxoiyxrsxyyyuxsuyuhsruhxisoyiuuixhrsxuxyyxxosihhyisxxohoyiiurxhixrruryiihxhsxhxuhoroou...

output:

732636589
377635994
204944545
800901731
855220417
505651421
500433866
804284443
619658341
415348374
...

result:


Test #10:

score: 0
Runtime Error

input:

10
qvvvvqqgqgvvvgqvgqvqqwqgwqvqggvgqqqgqvwwggwwqqqqqwvwqggqvgqqvvvvvwqvqvvgvvqgvwqggwqqvvwwvvgwwwgqg...

output:


result: