QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#286767#4909. 《关于因为与去年互测zjk撞题而不得不改题这回事》275307894a20 1086ms362352kbC++143.4kb2023-12-18 16:18:052023-12-18 16:18:05

Judging History

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

  • [2023-12-18 16:18:05]
  • 评测
  • 测评结果:20
  • 用时:1086ms
  • 内存:362352kb
  • [2023-12-18 16:18:05]
  • 提交

answer

#include<bits/stdc++.h>
#define Gc() getchar() 
#define Me(x,y) memset(x,y,sizeof(x))
#define Mc(x,y) memcpy(x,y,sizeof(x))
#define d(x,y) ((m)*(x-1)+(y))
#define R(n) (rnd()%(n)+1)
#define Pc(x) putchar(x)
#define LB lower_bound
#define UB upper_bound
#define fi first
#define se second
#define eb emplace_back
using namespace std;using ll=long long;using db=double;using lb=long db;using ui=unsigned;using ull=unsigned long long;using pii=pair<int,int>;
const int N=1e6+5,M=N*4+5,K=(1<<25)+5,mod=1e9+7,Mod=mod-1;const db eps=1e-9;const int INF=1e9+7;mt19937 rnd(time(0));
int n,k;vector<int> S[N];
int fa[N],tp[N],d[N],siz[N],son[N];
ll val[N],ns[N];int nh,rt[N];
vector<int> ad;
namespace Tree{
	int f[N*20],L[N*20],R[N*20],Ct;
	void cp(int &v){f[++Ct]=f[v];L[Ct]=L[v];R[Ct]=R[v];v=Ct;}
	void add(int x,int &v,int l=1,int r=nh){
		cp(v);f[v]++;if(l==r) return;int m=l+r>>1;
		x<=m?add(x,L[v],l,m):add(x,R[v],m+1,r);
	}
	int qry(int x,int y,int v,int l=1,int r=nh){
		if(x>y) return 0;if(x<=l&&r<=y) return f[v];
		int m=l+r>>1;return (x<=m?qry(x,y,L[v],l,m):0)+(y>m?qry(x,y,R[v],m+1,r):0);
	}
	void find(int x,int y,int v1,int v2,int v3,int v4,int l=1,int r=nh){
		int w=f[v1]+f[v2]-f[v3]-f[v4];if(!w||x>y) return;
		if(l==r) {while(w--) ad.emplace_back(l);return;}
		int m=l+r>>1;x<=m&&(find(x,y,L[v1],L[v2],L[v3],L[v4],l,m),0);y>m&&(find(x,y,R[v1],R[v2],R[v3],R[v4],m+1,r),0);
	}
}
void find(ll x,ll y,int v1,int v2,int v3,int v4){
	ad.clear();x=LB(ns+1,ns+nh+1,x)-ns;y=UB(ns+1,ns+nh+1,y)-ns-1;
	Tree::find(x,y,v1,v2,v3,v4);
}
int qry(ll x,ll y,int v){
	x=LB(ns+1,ns+nh+1,x)-ns;y=UB(ns+1,ns+nh+1,y)-ns-1;
	return Tree::qry(x,y,v);
}
void dfs1(int x,int La){
	fa[x]=La;d[x]=d[La]+1;siz[x]=1;rt[x]=rt[La];Tree::add(val[x],rt[x]);
	for(int i:S[x]) if(i^La) dfs1(i,x),siz[x]+=siz[i],siz[i]>siz[son[x]]&&(son[x]=i);
}
void dfs2(int x,int La){
	tp[x]=La;if(son[x]) dfs2(son[x],La);
	for(int i:S[x]) if(i^fa[x]&&i^son[x]) dfs2(i,i);
}
int lca(int x,int y){
	while(tp[x]^tp[y]) {
		if(d[tp[x]]<d[tp[y]]) swap(x,y);
		x=fa[tp[x]];
	}
	return d[x]<d[y]?x:y;
}
void Solve(){
	int i,j;scanf("%d",&n);
	for(i=1;i<n;i++){
		int x,y;scanf("%d%d",&x,&y);
		S[x].emplace_back(y);S[y].emplace_back(x);
	}
	for(i=1;i<=n;i++) scanf("%lld",&val[i]),ns[++nh]=val[i];
	sort(ns+1,ns+nh+1);nh=unique(ns+1,ns+nh+1)-ns-1;for(i=1;i<=n;i++) val[i]=LB(ns+1,ns+nh+1,val[i])-ns;
	dfs1(1,0);dfs2(1,1);
	ll LA=0;int q;scanf("%d",&q);while(q--){
		int x,y;scanf("%d%d%d",&x,&y,&k);x=(x^LA)%n+1;y=(y^LA)%n+1;
		int Ls=lca(x,y);
		multiset<ll> f;
		ll ans=0;for(i=61;~i;i--){
			int w=qry(ans+(1ll<<i),ans+(1ll<<i+1)-1,rt[x])+qry(ans+(1ll<<i),ans+(1ll<<i+1)-1,rt[y]);
			w-=qry(ans+(1ll<<i),ans+(1ll<<i+1)-1,rt[Ls])+qry(ans+(1ll<<i),ans+(1ll<<i+1)-1,rt[fa[Ls]]);
			vector<int> del;
			while(w<k&&!f.empty()&&(*f.rbegin())>>i&1) del.emplace_back(*f.rbegin()),f.erase(--f.end()),w++;
			// cerr<<i<<' '<<(f.empty()?-1:*f.begin())<<' '<<w<<'\n';
			if(w>=k) {
				ans|=1ll<<i;
				for(int j:del) f.emplace(j);
				while(!f.empty()&&~*f.begin()>>i&1) f.erase(f.begin());
			}else{
				for(int j:del) f.emplace(j^(1ll<<i));
				find(ans+(1ll<<i),ans+(1ll<<i+1)-1,rt[x],rt[y],rt[Ls],rt[fa[Ls]]);
				for(int j:ad) f.emplace(ns[j]^(1ll<<i))/*,cerr<<"add "<<i<<' '<<j<<'\n'*/;
			}
		}
		printf("%lld\n",LA=ans);
	}
}
int main(){
	int t=1;
	// scanf("%d",&t);
	while(t--) Solve();
	cerr<<clock()*1.0/CLOCKS_PER_SEC<<'\n';
}

Details

Tip: Click on the bar to expand more detailed information

Subtask #1:

score: 5
Accepted

Test #1:

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

input:

931
184 700
485 184
419 485
386 419
308 386
114 308
301 114
598 301
120 598
144 120
595 144
812 595
236 812
7 236
543 7
327 543
858 327
68 858
177 68
398 177
899 398
408 899
848 408
202 848
269 202
304 269
540 304
647 540
672 647
314 672
157 314
241 157
745 241
300 745
343 300
92 343
117 92
30 117
2...

output:

1152921504606846976

result:

ok 1 number(s): "1152921504606846976"

Test #2:

score: 0
Accepted
time: 3ms
memory: 27680kb

input:

915
911 748
514 911
805 514
729 805
753 729
40 753
671 40
664 671
94 664
61 94
726 61
690 726
597 690
216 597
644 216
533 644
605 533
22 605
307 22
455 307
377 455
114 377
660 114
589 660
569 589
409 569
408 409
821 408
736 821
599 736
60 599
475 60
57 475
412 57
85 412
524 85
846 524
595 846
262 59...

output:

288230376151711752

result:

ok 1 number(s): "288230376151711752"

Test #3:

score: 0
Accepted
time: 4ms
memory: 29772kb

input:

930
111 896
637 111
559 637
289 559
103 289
759 103
341 759
605 341
778 605
154 778
169 154
721 169
631 721
741 631
750 741
344 750
641 344
639 641
769 639
48 769
389 48
25 389
70 25
508 70
185 508
199 185
602 199
89 602
473 89
565 473
373 565
865 373
867 865
658 867
271 658
685 271
269 685
317 269
...

output:

268435456

result:

ok 1 number(s): "268435456"

Test #4:

score: 0
Accepted
time: 4ms
memory: 27852kb

input:

948
537 716
933 537
605 933
563 605
801 563
860 801
19 860
717 19
908 717
820 908
885 820
693 885
69 693
263 69
129 263
295 129
880 295
303 880
12 303
299 12
1 299
421 1
312 421
720 312
100 720
438 100
380 438
386 380
223 386
627 223
293 627
387 293
709 387
193 709
640 193
906 640
34 906
405 34
790 ...

output:

1152921504606846976

result:

ok 1 number(s): "1152921504606846976"

Test #5:

score: 0
Accepted
time: 0ms
memory: 29604kb

input:

928
626 381
247 626
97 247
358 97
886 358
898 886
736 898
776 736
75 776
123 75
512 123
223 512
355 223
530 355
95 530
523 95
903 523
144 903
324 144
382 324
487 382
127 487
538 127
171 538
836 171
129 836
259 129
914 259
574 914
7 574
141 7
246 141
65 246
482 65
865 482
265 865
690 265
925 690
449 ...

output:

134217728

result:

ok 1 number(s): "134217728"

Test #6:

score: 0
Accepted
time: 0ms
memory: 29384kb

input:

941
87 448
396 87
398 396
623 398
837 623
234 837
896 234
258 896
700 258
52 700
27 52
515 27
308 515
774 308
76 774
21 76
753 21
493 753
902 493
878 902
58 878
146 58
342 146
414 342
312 414
621 312
88 621
460 88
683 460
150 683
845 150
535 845
467 535
326 467
247 326
280 247
474 280
124 474
22 124...

output:

1152921504606846976

result:

ok 1 number(s): "1152921504606846976"

Test #7:

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

input:

947
635 486
821 635
758 821
504 758
470 504
170 470
468 170
778 468
560 778
864 560
308 864
213 308
43 213
849 43
525 849
126 525
681 126
785 681
640 785
254 640
354 254
263 354
455 263
295 455
714 295
474 714
64 474
794 64
582 794
325 582
676 325
176 676
393 176
624 393
86 624
205 86
359 205
704 35...

output:

1152921504606846976

result:

ok 1 number(s): "1152921504606846976"

Test #8:

score: 0
Accepted
time: 0ms
memory: 29212kb

input:

920
889 920
64 889
647 64
482 647
798 482
368 798
593 368
169 593
788 169
469 788
59 469
71 59
611 71
779 611
675 779
272 675
703 272
237 703
525 237
485 525
483 485
266 483
160 266
302 160
321 302
697 321
82 697
516 82
817 516
428 817
857 428
23 857
319 23
918 319
359 918
749 359
681 749
849 681
33...

output:

4398046511104

result:

ok 1 number(s): "4398046511104"

Subtask #2:

score: 0
Wrong Answer

Dependency #1:

100%
Accepted

Test #9:

score: 0
Wrong Answer
time: 1086ms
memory: 29636kb

input:

949
158 116
73 158
131 73
252 131
596 252
9 596
488 9
555 488
828 555
150 828
388 150
586 388
903 586
24 903
405 24
746 405
321 746
48 321
588 48
431 588
225 431
299 225
325 299
593 325
516 593
829 516
369 829
775 369
90 775
610 90
45 610
793 45
745 793
859 745
422 859
342 422
91 342
773 91
32 773
4...

output:

4194304
67108864
36028797018963968
1152921504606846976
1152921504606846976
33554432
1152921504606846976
576460752303423488
4194304
288230376151711744
128
549755813888
144115188075855872
18014398509481984
144115188075855872
1152921504606846976
1152921504606846976
0
70368744177664
0
115292150460684697...

result:

wrong answer 2nd numbers differ - expected: '2199023255552', found: '67108864'

Subtask #3:

score: 10
Accepted

Test #17:

score: 10
Accepted
time: 51ms
memory: 63464kb

input:

99115
98506 98914
1961 98506
45808 1961
23027 45808
16655 23027
66393 16655
77250 66393
68284 77250
53684 68284
21189 53684
84955 21189
73464 84955
47574 73464
40651 47574
21101 40651
6589 21101
59680 6589
6185 59680
25529 6185
207 25529
33286 207
98459 33286
92565 98459
85446 92565
97388 85446
1630...

output:

2050

result:

ok 1 number(s): "2050"

Test #18:

score: 0
Accepted
time: 42ms
memory: 61932kb

input:

99546
79711 12863
50539 79711
13393 50539
27933 13393
13465 27933
79157 13465
53742 79157
51081 53742
32220 51081
21079 32220
85595 21079
50222 85595
14565 50222
4589 14565
13763 4589
58913 13763
93835 58913
34953 93835
2185 34953
10246 2185
64420 10246
44274 64420
63093 44274
8007 63093
85947 8007
...

output:

512

result:

ok 1 number(s): "512"

Test #19:

score: 0
Accepted
time: 39ms
memory: 64052kb

input:

99762
90013 76047
42293 90013
7801 42293
75274 7801
59320 75274
60896 59320
10435 60896
5384 10435
34648 5384
15596 34648
92041 15596
67457 92041
20760 67457
65611 20760
81462 65611
38984 81462
17583 38984
83787 17583
59980 83787
71477 59980
31143 71477
92168 31143
71205 92168
69348 71205
6111 69348...

output:

16386

result:

ok 1 number(s): "16386"

Test #20:

score: 0
Accepted
time: 38ms
memory: 58248kb

input:

99132
46469 40521
51811 46469
47968 51811
10584 47968
73 10584
27351 73
16693 27351
12495 16693
53425 12495
95973 53425
24901 95973
82771 24901
49155 82771
35995 49155
50432 35995
91209 50432
5781 91209
83457 5781
41361 83457
37973 41361
48829 37973
62896 48829
77593 62896
21307 77593
86547 21307
61...

output:

8194

result:

ok 1 number(s): "8194"

Test #21:

score: 0
Accepted
time: 28ms
memory: 62852kb

input:

99403
81802 91324
60321 81802
76749 60321
70097 76749
16085 70097
8301 16085
61886 8301
72994 61886
23906 72994
18815 23906
6781 18815
7774 6781
18318 7774
54769 18318
39330 54769
55677 39330
46758 55677
36164 46758
10159 36164
24678 10159
29603 24678
14941 29603
7966 14941
42934 7966
35909 42934
24...

output:

32770

result:

ok 1 number(s): "32770"

Test #22:

score: 0
Accepted
time: 31ms
memory: 62892kb

input:

99468
33859 68644
12306 33859
44304 12306
18200 44304
27325 18200
35907 27325
88149 35907
71599 88149
86384 71599
83793 86384
19513 83793
4843 19513
3007 4843
52878 3007
83019 52878
5275 83019
61517 5275
21453 61517
55993 21453
50710 55993
16211 50710
76061 16211
12048 76061
41970 12048
86181 41970
...

output:

514

result:

ok 1 number(s): "514"

Test #23:

score: 0
Accepted
time: 35ms
memory: 57716kb

input:

99179
45430 91876
8718 45430
75718 8718
15306 75718
21806 15306
78221 21806
74287 78221
66218 74287
66830 66218
64948 66830
16118 64948
33879 16118
81821 33879
69640 81821
27802 69640
25979 27802
6393 25979
63447 6393
48459 63447
53612 48459
27525 53612
52654 27525
80810 52654
767 80810
23808 767
82...

output:

32768

result:

ok 1 number(s): "32768"

Test #24:

score: 0
Accepted
time: 52ms
memory: 58452kb

input:

99240
8561 98467
49571 8561
13264 49571
94195 13264
85879 94195
53012 85879
29828 53012
25813 29828
57793 25813
10678 57793
88525 10678
70070 88525
54163 70070
51466 54163
3857 51466
77958 3857
29023 77958
154 29023
5173 154
4349 5173
24310 4349
21821 24310
36125 21821
75498 36125
7147 75498
22336 7...

output:

32770

result:

ok 1 number(s): "32770"

Subtask #4:

score: 5
Accepted

Dependency #1:

100%
Accepted

Dependency #3:

100%
Accepted

Test #25:

score: 5
Accepted
time: 639ms
memory: 333464kb

input:

992362
488995 967308
576776 488995
440373 576776
199494 440373
436524 199494
260014 436524
157103 260014
693611 157103
218612 693611
590935 218612
701779 590935
112004 701779
322594 112004
53706 322594
442686 53706
659639 442686
567880 659639
786210 567880
289019 786210
599273 289019
188834 599273
1...

output:

1152921504606846984

result:

ok 1 number(s): "1152921504606846984"

Test #26:

score: 0
Accepted
time: 669ms
memory: 315372kb

input:

992770
411251 413303
421801 411251
751171 421801
294667 751171
506990 294667
136648 506990
288093 136648
514687 288093
886681 514687
75611 886681
178157 75611
99736 178157
277007 99736
744383 277007
226929 744383
53879 226929
617778 53879
170759 617778
467641 170759
123171 467641
732929 123171
90501...

output:

1152921504606847232

result:

ok 1 number(s): "1152921504606847232"

Test #27:

score: 0
Accepted
time: 638ms
memory: 317640kb

input:

992506
78169 990749
904956 78169
8556 904956
618930 8556
318854 618930
643267 318854
255067 643267
635064 255067
911717 635064
932598 911717
323834 932598
620573 323834
172635 620573
541580 172635
96011 541580
745144 96011
403925 745144
60605 403925
118756 60605
219373 118756
253153 219373
30380 253...

output:

1152921504606846976

result:

ok 1 number(s): "1152921504606846976"

Test #28:

score: 0
Accepted
time: 649ms
memory: 362352kb

input:

998381
898343 893428
759432 898343
531529 759432
497678 531529
960345 497678
211399 960345
268908 211399
804788 268908
48879 804788
567713 48879
934755 567713
587571 934755
2755 587571
357711 2755
312979 357711
758254 312979
494581 758254
906640 494581
80127 906640
558475 80127
694426 558475
34296 6...

output:

1152921504606846976

result:

ok 1 number(s): "1152921504606846976"

Subtask #5:

score: 0
Skipped

Dependency #1:

100%
Accepted

Dependency #2:

0%

Subtask #6:

score: 0
Skipped

Dependency #5:

0%

Subtask #7:

score: 0
Time Limit Exceeded

Test #45:

score: 0
Time Limit Exceeded

input:

996678
2 1
3 1
4 1
5 1
6 3
7 5
8 5
9 5
10 7
11 8
12 9
13 1
14 2
15 7
16 4
17 5
18 17
19 16
20 2
21 1
22 1
23 9
24 17
25 19
26 10
27 9
28 7
29 25
30 25
31 4
32 11
33 31
34 21
35 13
36 19
37 25
38 10
39 11
40 20
41 35
42 1
43 19
44 20
45 41
46 1
47 19
48 5
49 28
50 21
51 33
52 7
53 14
54 21
55 20
56 1...

output:

4
0
4
0
0
0
0
0
0
0
0
0
0
0
0
0
2
0
8
0
0
0
0
16
0
0
4096
0
0
0
0
4096
0
0
0
0
2
0
0
0
0
4
0
0
0
0
32
64
0
0
0
512
64
4
4096
0
2
0
0
131072
0
0
0
0
0
0
0
0
2
0
0
0
2
0
4096
2
0
0
0
0
0
512
2
8
0
0
4096
64
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
512
0
0
36
0
0
0
0
0
0
0
64
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0...

result:


Subtask #8:

score: 0
Skipped

Dependency #1:

100%
Accepted

Dependency #2:

0%