UOJ Logo

NOI.AC

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#203609#21. T2UperFicial10011857ms470668kbC++112.5kb2024-02-28 11:27:432024-02-28 12:17:33

answer

#include<bits/stdc++.h>
#define ll long long
#define rep(i,a,b) for(int i=(a);i<=(b);i++)
#define per(i,a,b) for(int i=(b);i>=(a);i--)
#define endl "\n"
#define For(i,u) for(int i=head[u];i;i=e[i].next)
#define V vector<int>
#define VV vector<V>
#define Debug(a) cout<<"QwQ "<<a<<endl;
#define FST NOT_FST
#define trash_round unrated
#define pint pair<int,int>
#define fi first
#define se second
#define Vp vector<pint>
using namespace std;
int n,m,MOD;
int read()
{
	int x;
	scanf("%d",&x);
	return x;
}
string reads()
{
	char ch=getchar();string s;
	while(ch<'a'||ch>'z'){ch=getchar();}
	while(ch>='a'&&ch<='z'){s+=ch;ch=getchar();}
	return s;
}
char readc()
{
	char ch=getchar();
	while(ch<'a'||ch>'z') ch=getchar();
	return ch;
}

// down is mytrue code ------------------------------

const int N=1e6+5,M=55;

int a[M][M],A[N][M],del[M];//ǰ׺inv(×îºóÒ»ÁÐ)

int B[N][M],b[M][M];//ǰ׺mi(ÿһÁкÍ)

ll u[N],v[N],l[N],r[N],ans[N],D=1e9+7;

char c[N];

int solve(int l,int r)
{
	int ans=0;
	rep(i,0,52)
	{
//		cout<<i<<" "<<A[l-1][i]<<" "<<B[r][i]<<endl;
		(ans+=1ll*A[l-1][i]*B[r][i]%MOD)%=MOD;
	}
//	cout<<ans<<endl;
	if(ans!=0) ans--;
	else ans=MOD-1;
	return ans;
}

int add(int x,int y)
{
	x+=y;
	if(x>=MOD) x-=MOD;
	if(x<0) x+=MOD;
	return x;
}

signed main()
{
	int n=read(),m=read();
	MOD=read();
	int tp=read();
	scanf("%s",c+1);
	A[0][52]=1;
	rep(j,0,52) B[0][j]=1,b[j][j]=1,a[j][j]=1;
	rep(i,1,n)
	{
		int k;
		if(c[i]>='A'&&c[i]<='Z') k=c[i]-'A';
		else k=c[i]-'a'+26;
		int t;
		rep(j,0,52)
		{
			t=add(a[j][k],-del[j]);
			del[j]=add(del[j],t);
			a[j][k]=add(a[j][k],t);
		}
		rep(j,0,52) A[i][j]=add(a[j][52],-del[j]);
		rep(j,0,52) 
		{
			B[i][j]=add(B[i-1][j]*2%MOD,-b[k][j]);
			b[k][j]=B[i-1][j];
		}
	}
//	rep(i,1,n)
//	{
//		rep(j,0,52)
//		{
//			cout<<A[i][j]<<" ";
//		}
//		cout<<endl;
//	}
//	rep(i,1,n)
//	{
//		rep(j,0,52)
//		{
//			cout<<B[i][j]<<" ";
//		}
//		cout<<endl;
//	}
	if(!tp)
	{
		int last=0;
		rep(i,1,m)
		{
			int l=read(),r=read();
			last^=solve(l,r);
		}
		cout<<last<<endl;
	}
	else
	{
		ll x=read(),y=read(),a=read(),b=read(),c=read();
		u[0]=x,v[0]=y;
		rep(i,1,m)
		{
			u[i]=((a*u[i-1]+b*v[i-1]+c*i)^ans[i-1])%D;
			v[i]=((b*u[i-1]+c*v[i-1]+a*i)^ans[i-1])%D;
			l[i]=min(u[i]%n+1,v[i]%n+1);
			r[i]=max(u[i]%n+1,v[i]%n+1);
//			cout<<u[i]<<" "<<v[i]<<" "<<l[i]<<" "<<r[i]<<endl;
			ans[i]=solve(l[i],r[i]);
//			cout<<ans[i]<<endl;
		}
		cout<<ans[m]<<endl;
	}
	return 0;
}


这程序好像有点Bug,我给组数据试试?

详细

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

Test #1:

score: 5
Accepted
time: 0ms
memory: 1260kb

input:

15 100 948805069 0
lxtotqfsohggevl
5 6
11 11
2 8
1 12
3 7
10 13
6 10
3 11
11 14
5 9
4 4
6 14
15 15
1...

output:

8548

result:

ok 1 number(s): "8548"

Test #2:

score: 5
Accepted
time: 0ms
memory: 1280kb

input:

20 97 989348567 1
jtfafthctxxtdwubtzpe
741807267 412148822 143552381 499390273 886209029

output:

4415

result:

ok 1 number(s): "4415"

Test #3:

score: 5
Accepted
time: 0ms
memory: 1728kb

input:

1000 991 932742221 1
abaaaabaaaabbbaabbabbabbbabbaabaabbabbaaaaabaabbaaaabbaabbabbbabaabaabbbbbaabbb...

output:

872177429

result:

ok 1 number(s): "872177429"

Test #4:

score: 5
Accepted
time: 0ms
memory: 1680kb

input:

988 974 991403639 0
ffdbagjiabhcbhhafccifcicdibbegbfjciijceebdcihaecjcjgedabiafhcebfhjhafihheafcibeb...

output:

540230197

result:

ok 1 number(s): "540230197"

Test #5:

score: 5
Accepted
time: 2ms
memory: 1724kb

input:

980 1000 972034103 1
frgCgtcksyhiuBkjnoiutffkccaiCdmjiDrsqkmolrafoxsyxpjencxCjlmbmDapxifzDlpkzfDpqlc...

output:

99250938

result:

ok 1 number(s): "99250938"

Test #6:

score: 5
Accepted
time: 0ms
memory: 1728kb

input:

992 995 920406419 1
izWVrAwtgveRwqPxtpexjuooVoqQwvYSAXylMiGgFkNliqrDmPqUOIgnuPhPLGkXOFPGaHfwxJfGedho...

output:

610154493

result:

ok 1 number(s): "610154493"

Test #7:

score: 5
Accepted
time: 71ms
memory: 24748kb

input:

50000 50000 939141901 1
caaacbacaabcccabababccbabbbacaabacaababbccbabbbabcbaabababcbabacccbcacaacbaa...

output:

60595922

result:

ok 1 number(s): "60595922"

Test #8:

score: 5
Accepted
time: 78ms
memory: 22560kb

input:

49486 49831 944412583 0
bhgghgifdicccfceaegchjgjjajbgdjdijcbefecgbffdaceffgdadhgdbhiddecbghcbgjjeibi...

output:

129707546

result:

ok 1 number(s): "129707546"

Test #9:

score: 5
Accepted
time: 166ms
memory: 44188kb

input:

99699 98499 950617859 0
abbbcbbcbcaaaccacacbabaabbacbaccacaaacaabbcccbaacaccabbbaccaccccbbabbacbbaab...

output:

1038586289

result:

ok 1 number(s): "1038586289"

Test #10:

score: 5
Accepted
time: 133ms
memory: 47788kb

input:

99028 99227 917378563 1
ahfbbgbdgchjffeajeddgichhbhibaehecddjebejcfabcafeiecfdhccjcdjfegjafcggigdcfi...

output:

670219368

result:

ok 1 number(s): "670219368"

Test #11:

score: 5
Accepted
time: 41ms
memory: 44316kb

input:

100000 1 971758357 0
ghddhjihfjjeffbgciicbifaaajhcachcdgfaiebgjjcjbacgccjcahddfcdefdhifccaihdjghibbd...

output:

621613165

result:

ok 1 number(s): "621613165"

Test #12:

score: 5
Accepted
time: 36ms
memory: 43772kb

input:

98742 1 964324297 0
qFQhCALneJvtkKaazitvKgmyzkCrFoyfEgifFapKxZCZAxXAQgohQSGsNGOnlPgsUlzjHFixsQQubemS...

output:

662652988

result:

ok 1 number(s): "662652988"

Test #13:

score: 5
Accepted
time: 1425ms
memory: 464268kb

input:

985392 988924 940107673 1
bccsecgtjcgbmpibjscemkpddhlngofmoeirsgsqgfkrabfghdgejhabjpklancoadqodfshha...

output:

237224621

result:

ok 1 number(s): "237224621"

Test #14:

score: 5
Accepted
time: 1466ms
memory: 467216kb

input:

991298 1000000 946066763 1
ichmmgnophgdeafqhakgpboaqsrfhsksfebmtipmebtgbjcokqtqhjbtrgjapainhdgdnehdp...

output:

216882804

result:

ok 1 number(s): "216882804"

Test #15:

score: 5
Accepted
time: 1408ms
memory: 470256kb

input:

1000000 981472 921606403 1
MvCbDqyAGEuwGakyHLjqNszqgIhwzdzmbcxtKeAfIrwflJgBpFMeodddwhsEHkdIoAKBmJvHM...

output:

589409657

result:

ok 1 number(s): "589409657"

Test #16:

score: 5
Accepted
time: 1406ms
memory: 466624kb

input:

989926 1000000 916856789 1
fyKikxprDzrMiGcmGgDpjmAJFMCcsqtdGClCgBexxIBFwbdpiyjkkkBCijnlduDlCqCiEcoja...

output:

914517434

result:

ok 1 number(s): "914517434"

Test #17:

score: 5
Accepted
time: 1392ms
memory: 466248kb

input:

989896 990053 929409779 1
iWXAmkZnIeWwHQlTNEHyqsPyufZrBJswNzqrbnyardPhXqhEpkWHSHvCfmEswhaztzRsolrESd...

output:

893455734

result:

ok 1 number(s): "893455734"

Test #18:

score: 5
Accepted
time: 1383ms
memory: 470668kb

input:

999316 999505 999621019 1
CMCmzhadDuqpIItNPywXBqYGsmtCrOHZRgBkEgsrTxlnNnlYdaPocSyNYSKKdJvoEINCpDzcXy...

output:

502774340

result:

ok 1 number(s): "502774340"

Test #19:

score: 5
Accepted
time: 1425ms
memory: 470652kb

input:

1000000 991480 942154177 1
NpsuQfVPdBvubQzKOQdmRgMTyHAFwJJnVzHLKfQNcGgDzITJferBIqATCjcpMRvHRdhhSvZSF...

output:

334208970

result:

ok 1 number(s): "334208970"

Test #20:

score: 5
Accepted
time: 1425ms
memory: 467608kb

input:

992201 999520 917378563 1
OFVtpUtPiuJTRRQAlojpeUCjltLorquLOWLDvczOPwfkFiapQQOiTtjYgFiDVDQsRUTGmmWGXU...

output:

49315597

result:

ok 1 number(s): "49315597"

Extra Test:

score: 0
Extra Test Passed