QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#618727#5402. 术树数Xun_xiaoyao3 328ms31440kbC++202.9kb2024-10-07 09:03:482024-10-07 09:03:48

Judging History

你现在查看的是最新测评结果

  • [2024-10-07 09:03:48]
  • 评测
  • 测评结果:3
  • 用时:328ms
  • 内存:31440kb
  • [2024-10-07 09:03:48]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;
int Qread()
{
	int x=0;char ch=getchar();
	while(ch<'0'||ch>'9') ch=getchar();
	while(ch>='0'&&ch<='9') x=x*10+(ch^48),ch=getchar();
	return x;
}
void exgcd(int a,int b,int &x,int &y)
{
	if(b==0) return x=1,y=0,void();
	else exgcd(b,a%b,y,x),y-=a/b*x,void();
}
int Q,k,m;
struct Vector{
	int num[25];
	Vector operator+(const Vector A) const
	{
		Vector ret;
		for(int i=0;i<m;i++)
		{
			ret.num[i]=num[i]+A.num[i];
			if(ret.num[i]>=k) ret.num[i]-=k;
		}
		return ret;
	}
	Vector operator-(const Vector A)const
	{
		Vector ret;
		for(int i=0;i<m;i++)
		{
			ret.num[i]=num[i]-A.num[i];
			if(ret.num[i]<0) ret.num[i]+=k;
		}
		return ret;
	}
	Vector operator*(const int A)const
	{
		Vector ret;int a=A%k;while(a<0) a+=k;
		for(int i=0;i<m;i++)
			ret.num[i]=1ll*num[i]*a%k;
		return ret;
	}
	void input(int x)
	{
		for(int i=0;i<m;i++)
			num[i]=x%k,x/=k;
	}
	int output()
	{
		int ret=0;
		for(int i=m-1;~i;i--)
			ret=ret*k+num[i];
		return ret;
	}
	void show()
	{
		for(int i=0;i<m;i++)
			printf("%d ",num[i]);
		printf("\n");
	}
};
Vector bas[30];bool hv[30];
queue<Vector> G;
void ins(Vector X)
{
	int x,y;

	// X.show();

	for(int i=m-1;~i;i--) if(X.num[i])
	{
		if(hv[i])
		{
			if(__gcd(X.num[i],bas[i].num[i])<bas[i].num[i])
			{
				exgcd(X.num[i],bas[i].num[i],x,y);
				G.push(X);G.push(bas[i]);
				bas[i]=X*x+bas[i]*y;
			}
			X=X-bas[i]*(X.num[i]/bas[i].num[i]);
		}
		else
		{
			exgcd(X.num[i],k,x,y);
			hv[i]=true,bas[i]=X*x;
			break;
		}
	}
}
void chk()
{
	while(!G.empty())
		ins(G.front()),G.pop();
}
Vector calc(Vector X)
{
	X.show();
	for(int i=m-1;~i;i--) if(X.num[i]&&hv[i])
		X=X-bas[i]*(X.num[i]/bas[i].num[i]);
	return X;
}
int op,x,y,v,n,lca;
int dep[200010],fa[20][200010];
Vector tmp,val[200010];
inline int get_lca(int u,int v)
{
	if(dep[u]<dep[v]) swap(u,v);
	for(int i=19;~i;i--) if(dep[fa[i][u]]>=dep[v])
		u=fa[i][u];
	for(int i=19;~i;i--) if(fa[i][u]!=fa[i][v])
		u=fa[i][u],v=fa[i][v];
	return u!=v?u:fa[0][u];
}
int main()
{
	Q=Qread(),k=Qread(),m=Qread();
	
	if(k&1)
	{
		for(int i=1;i<=Q;i++)
		{
			op=Qread();
			if(op==1) x=Qread(),v=Qread();
			else if(op==2) x=Qread(),y=Qread(),v=Qread();
			else x=Qread(),y=Qread(),printf("0\n");
		}
		return 0;
	}
	
	n=1;
	for(int i=1;i<=Q;i++)
	{
		op=Qread();
		if(op==1)
		{
			x=Qread(),v=Qread();
			fa[0][++n]=x;
			for(int i=1;i<20;i++)
				fa[i][n]=fa[i-1][fa[i-1][n]];
			tmp.input(v);
			val[n]=val[x]+tmp,dep[n]=dep[x]+1;
			ins(tmp*2);chk();
		}
		else if(op==2)
		{
			x=Qread(),y=Qread(),v=Qread();
			lca=get_lca(x,y);
			tmp.input(v);
			tmp=tmp+val[x]+val[y]-val[lca]-val[lca];
			ins(tmp);chk();
		}
		else
		{
			x=Qread(),y=Qread();
			lca=get_lca(x,y);
			tmp=val[x]+val[y]-val[lca]-val[lca];
			tmp=calc(tmp);
			printf("%d\n",tmp.output());
		}
	}
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Subtask #1:

score: 0
Wrong Answer

Test #1:

score: 2
Accepted
time: 0ms
memory: 3612kb

input:

30 7 3
1 1 301
1 1 236
1 2 278
3 2 4
3 2 4
2 1 4 265
1 1 242
1 4 278
1 6 337
3 2 3
2 5 7 304
2 5 6 34
1 4 178
3 6 7
3 5 7
3 1 4
1 1 178
3 3 4
3 1 6
3 3 4
2 6 7 131
1 1 213
3 1 3
2 3 10 11
3 4 6
2 5 9 169
1 6 9
2 5 10 29
1 9 111
3 9 11

output:

0
0
0
0
0
0
0
0
0
0
0
0

result:

ok 12 lines

Test #2:

score: 2
Accepted
time: 0ms
memory: 3732kb

input:

30 9 3
1 1 694
1 2 251
1 2 623
2 2 4 109
3 3 4
3 1 2
2 2 4 611
1 4 595
2 2 5 477
2 2 5 363
3 1 3
2 1 5 121
1 2 225
2 1 5 214
2 3 6 706
3 3 4
2 2 3 122
2 2 3 621
3 2 3
3 2 4
2 1 5 630
1 5 598
3 4 5
3 1 3
1 2 665
2 1 2 331
2 1 6 449
1 2 387
3 3 6
3 4 6

output:

0
0
0
0
0
0
0
0
0
0

result:

ok 10 lines

Test #3:

score: 0
Wrong Answer
time: 3ms
memory: 20120kb

input:

30 4 5
1 1 854
1 1 467
1 2 708
2 2 4 529
1 4 115
1 4 444
2 3 4 108
2 2 5 724
2 1 3 375
1 5 827
2 5 6 974
1 3 73
3 2 3
2 2 3 140
3 5 6
2 6 8 787
3 1 5
1 5 971
3 4 6
2 4 5 816
3 7 8
3 2 4
1 6 855
2 5 10 39
2 6 9 280
2 6 10 662
3 7 10
1 6 412
3 4 7
1 6 276

output:

1 3 0 2 2 
0
1 3 0 1 1 
256
1 2 0 1 1 
256
0 1 3 0 1 
256
0 0 2 3 3 
0
0 3 2 1 0 
0
3 2 0 2 3 
0
2 0 2 3 3 
0

result:

wrong answer 1st lines differ - expected: '0', found: '1 3 0 2 2 '

Subtask #2:

score: 0
Skipped

Dependency #1:

0%

Subtask #3:

score: 0
Wrong Answer

Test #21:

score: 11
Accepted
time: 8ms
memory: 3768kb

input:

198517 3 16
1 1 40710744
1 2 21885097
1 1 23592366
1 4 7387074
1 5 16074177
1 1 41027400
1 4 18082971
1 2 12822448
1 1 2286557
1 1 27896295
1 11 14532760
1 8 2357296
1 11 9190559
1 6 40503152
3 4 11
3 1 7
3 3 7
3 8 14
3 12 15
3 2 3
1 10 34606866
1 13 42718465
1 16 30353561
3 5 11
3 2 6
3 16 18
1 3 2...

output:

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
...

result:

ok 99662 lines

Test #22:

score: 0
Wrong Answer
time: 217ms
memory: 31440kb

input:

198073 8 8
1 1 4007183
1 1 411647
1 1 3301064
1 1 2747675
1 3 11141272
1 3 4308435
1 4 15582931
1 5 11340890
1 2 9172283
1 9 542280
1 10 12209796
1 3 2829956
3 1 3
1 3 724504
3 2 14
3 3 14
3 9 12
3 7 10
1 1 3594204
1 14 13600647
1 15 4589767
3 10 14
1 4 10564184
1 13 1781174
1 19 6067505
1 9 6735060...

output:

7 7 7 3 4 4 1 0 
262729
0 5 5 6 6 4 0 1 
2097224
6 1 6 5 0 6 4 0 
520
5 4 7 3 7 6 6 6 
4673
6 3 0 7 0 0 0 7 
2097672
3 0 7 2 1 7 6 3 
2134081
1 1 6 7 7 0 4 1 
2101769
6 2 7 4 1 7 6 1 
2134080
0 5 7 7 5 2 0 7 
2101832
6 2 2 5 0 1 2 5 
2130432
0 5 7 7 6 2 0 6 
584
6 3 7 6 2 7 6 1 
2129992
4 1 2 7 0 5 ...

result:

wrong answer 1st lines differ - expected: '262729', found: '7 7 7 3 4 4 1 0 '

Subtask #4:

score: 0
Wrong Answer

Test #26:

score: 0
Wrong Answer
time: 129ms
memory: 28284kb

input:

198891 26426880 1
1 1 0
2 1 2 0
3 1 2
1 1 0
3 2 3
3 1 2
1 2 0
1 2 0
1 3 0
1 6 0
2 1 6 0
2 3 6 0
3 2 3
1 2 13213440
1 2 13213440
1 4 13213440
3 4 10
1 1 13213440
2 3 4 0
2 3 8 13213440
1 1 0
1 12 0
1 13 0
1 3 0
3 2 11
3 2 12
2 11 14 13213440
1 6 0
2 12 14 0
2 1 2 0
1 10 0
1 12 0
2 3 13 0
3 12 14
3 1 ...

output:

0 
0
0 
0
0 
0
0 
0
13213440 
13213440
13213440 
13213440
0 
0
0 
0
0 
0
13213440 
13213440
0 
0
0 
0
13213440 
13213440
0 
0
13213440 
13213440
0 
0
13213440 
13213440
0 
0
13213440 
13213440
13213440 
13213440
13213440 
13213440
13213440 
13213440
13213440 
13213440
0 
0
13213440 
13213440
1321344...

result:

wrong answer 5th lines differ - expected: '13213440', found: '0 '

Subtask #5:

score: 0
Wrong Answer

Test #30:

score: 0
Wrong Answer
time: 328ms
memory: 28660kb

input:

199458 2 25
1 1 31252443
2 1 2 22827339
1 2 13517756
1 2 5635412
1 3 33397078
1 3 33542998
2 3 5 1484991
3 5 6
2 1 3 7938846
2 1 2 3665458
1 3 29150948
3 4 5
1 3 733545
1 7 4698781
1 7 21699192
1 6 10854390
3 3 8
3 4 8
1 2 6889338
2 1 12 27646676
2 6 8 24407215
1 11 20847453
3 4 13
1 6 16891344
3 4 ...

output:

0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 
150016
0 1 1 1 1 1 0 1 1 1 1 0 0 1 0 0 0 1 1 0 0 1 1 0 1 
891079
1 0 0 1 0 1 1 0 1 0 0 0 1 1 0 0 1 1 0 1 0 0 0 0 0 
733545
1 0 0 0 0 0 0 1 1 1 1 1 0 0 0 1 0 0 0 0 1 0 0 1 0 
1048849
1 0 1 0 1 0 0 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 0 
7306736
1 0 0 0 ...

result:

wrong answer 1st lines differ - expected: '150016', found: '0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 '

Subtask #6:

score: 3
Accepted

Test #33:

score: 3
Accepted
time: 3ms
memory: 3864kb

input:

49958 1023 2
1 1 122428
1 1 917186
2 2 3 53148
1 3 876461
2 1 3 968146
2 2 4 569341
2 3 4 199413
2 1 4 238371
1 3 127427
1 2 887225
2 1 4 776059
2 4 6 155479
2 1 6 795533
1 5 159578
3 5 6
2 2 5 758778
2 5 6 601115
3 4 7
1 4 202224
2 5 6 902346
3 1 6
3 5 7
3 3 5
1 2 791251
1 5 502214
2 6 7 929048
1 6...

output:

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
...

result:

ok 16607 lines

Test #34:

score: 3
Accepted
time: 13ms
memory: 3728kb

input:

198392 7 9
1 1 23598910
3 1 2
1 1 25616681
2 1 2 22101090
2 2 3 25455751
3 1 2
3 1 2
1 3 25668120
3 1 3
1 3 23878180
1 4 10885281
1 1 5873751
2 2 7 31608236
3 2 3
3 3 5
2 2 6 37313936
2 1 6 36853293
2 4 7 6773989
2 1 7 19143946
3 2 7
3 3 7
3 1 2
1 1 31756932
3 3 6
2 5 8 39585364
1 2 27162269
3 4 5
2...

output:

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
...

result:

ok 65758 lines

Subtask #7:

score: 0
Skipped

Dependency #1:

0%