QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#732196#7478. 无力回天 NOI2017TheZone100 ✓2250ms22264kbC++205.3kb2024-11-10 13:38:422024-11-10 13:38:43

Judging History

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

  • [2024-11-10 13:38:43]
  • 评测
  • 测评结果:100
  • 用时:2250ms
  • 内存:22264kb
  • [2024-11-10 13:38:42]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
const int N=5e4+5;
const int M=30;
struct Node
{
	int A[M+5];
	inline void Ins(int x)
	{
		for(int i=M;i>=0&&x;i--)
		{
			if((x>>i)&1)
			{
				if(!A[i])A[i]=x;
				x^=A[i];
			}
		}
	}
	void Clear(){memset(A,0,sizeof(A));}
	Node operator+(const Node&y)
	{
		Node T=y;
		for(int i=M;i>=0;i--)T.Ins(A[i]);
		return T;
	}
}t[N<<2],E;
int n,m,A[N];
#define Ls(x) (x<<1)
#define Rs(x) (x<<1|1)
#define Mid (L+R>>1)
#define All 1,1,n
void Bt(int u,int L,int R)
{
	for(int i=L;i<=R;i++)t[u].Ins(A[i]);
	if(L==R)return;
	Bt(Ls(u),L,Mid),Bt(Rs(u),Mid+1,R);
	t[u]=t[Ls(u)]+t[Rs(u)];
}
void Upd(int u,int L,int R,int x,int y)
{
	if(L==R)
	{
		t[u].Clear(),A[L]^=y;
		t[u].Ins(A[L]);
		return;
	}
	if(x<=Mid)Upd(Ls(u),L,Mid,x,y);
	else Upd(Rs(u),Mid+1,R,x,y);
	t[u]=t[Ls(u)]+t[Rs(u)];
}
Node Qry(int u,int L,int R,int l,int r)
{
	if(R<l||r<L)return E;
	if(l<=L&&R<=r)return t[u];
	return Qry(Ls(u),L,Mid,l,r)+Qry(Rs(u),Mid+1,R,l,r);
}
struct BIT
{
	int t[N];
	inline int LB(int x){return x&-x;}
	inline void Upd(int x,int k){for(int i=x;i<=n;i+=LB(i))t[i]^=k;}
	inline int Qry(int x){int Ans=0;for(int i=x;i;i-=LB(i))Ans^=t[i];return Ans;}
}T;
int main()
{
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++)scanf("%d",&A[i]);
	for(int i=n;i>=1;i--)A[i]^=A[i-1];
	for(int i=1;i<=n;i++)T.Upd(i,A[i]);
	Bt(All);
	while(m--)
	{
		int o,L,R,v;
		scanf("%d%d%d%d",&o,&L,&R,&v);
		if(o==1)
		{
			T.Upd(L,v),T.Upd(R+1,v);
			Upd(All,L,v);if(R+1<=n)Upd(All,R+1,v);
		}
		else
		{
			int K=T.Qry(L);
			if(L==R)printf("%d\n",max(K^v,v));
			else
			{
				Node Ans=Qry(All,L+1,R);
				Ans.Ins(K);
				for(int i=M;i>=0;i--)
				{
					if((Ans.A[i]^v)>v)v^=Ans.A[i];
				}
				printf("%d\n",v);
			}
		}
	}
}
/*#include<bits/stdc++.h>
using namespace std;
const int N=5e4+5;
const int M=30;
struct Node
{
	int A[M+5];
	inline void Ins(int x)
	{
		for(int i=M;i>=0&&x;i--)
		{
			if((x>>i)&1)
			{
				if(!A[i])A[i]=x;
				x^=A[i];
			}
		}
	}
	void Clear(){memset(A,0,sizeof(A));}
	Node operator+(const Node&y)
	{
		Node T=y;
		for(int i=M;i>=0;i--)T.Ins(A[i]);
		return T;
	}
}t[N<<2],E;
int n,m,A[N];
#define Ls(x) (x<<1)
#define Rs(x) (x<<1|1)
#define Mid (L+R>>1)
#define All 1,1,n
void Bt(int u,int L,int R)
{
	for(int i=L;i<=R;i++)t[u].Ins(A[i]);
	if(L==R)return;
	Bt(Ls(u),L,Mid),Bt(Rs(u),Mid+1,R);
	t[u]=t[Ls(u)]+t[Rs(u)];
}
void Upd(int u,int L,int R,int x,int y)
{
	if(L==R)
	{
		t[u].Clear(),A[L]^=y;
		t[u].Ins(A[L]);
		return;
	}
	if(x<=Mid)Upd(Ls(u),L,Mid,x,y);
	else Upd(Rs(u),Mid+1,R,x,y);
	t[u]=t[Ls(u)]+t[Rs(u)];
}
Node Qry(int u,int L,int R,int l,int r)
{
	if(R<l||r<L)return E;
	if(l<=L&&R<=r)return t[u];
	return Qry(Ls(u),L,Mid,l,r)+Qry(Rs(u),Mid+1,R,l,r);
}
struct BIT
{
	int t[N];
	inline int LB(int x){return x&-x;}
	inline void Upd(int x,int k){for(int i=x;i<=n;i+=LB(i))t[i]^=k;}
	inline int Qry(int x){int Ans=0;for(int i=x;i;i-=LB(i))Ans^=t[i];return Ans;}
}T;
int main()
{
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++)scanf("%d",&A[i]);
	for(int i=n;i>=1;i--)A[i]^=A[i-1];
	for(int i=1;i<=n;i++)T.Upd(i,A[i]);
	Bt(All);
	while(m--)
	{
		int o,L,R,v;
		scanf("%d%d%d%d",&o,&L,&R,&v);
		if(o==1)
		{
			T.Upd(L,v),T.Upd(R+1,v);
			Upd(All,L,v);if(R+1<=n)Upd(All,R+1,v);
		}
		else
		{
			int K=T.Qry(L);
			if(L==R)printf("%d\n",max(K^v,v));
			else
			{
				Node Ans=Qry(All,L+1,R);
				Ans.Ins(K);
				for(int i=M;i>=0;i--)
				{
					if((Ans.A[i]^v)>v)v^=Ans.A[i];
				}
				printf("%d\n",v);
			}
		}
	}
}#include<bits/stdc++.h>
using namespace std;
const int N=5e4+5;
const int M=30;
struct Node
{
	int A[M+5];
	inline void Ins(int x)
	{
		for(int i=M;i>=0&&x;i--)
		{
			if((x>>i)&1)
			{
				if(!A[i])A[i]=x;
				x^=A[i];
			}
		}
	}
	void Clear(){memset(A,0,sizeof(A));}
	Node operator+(const Node&y)
	{
		Node T=y;
		for(int i=M;i>=0;i--)T.Ins(A[i]);
		return T;
	}
}t[N<<2],E;
int n,m,A[N];
#define Ls(x) (x<<1)
#define Rs(x) (x<<1|1)
#define Mid (L+R>>1)
#define All 1,1,n
void Bt(int u,int L,int R)
{
	for(int i=L;i<=R;i++)t[u].Ins(A[i]);
	if(L==R)return;
	Bt(Ls(u),L,Mid),Bt(Rs(u),Mid+1,R);
	t[u]=t[Ls(u)]+t[Rs(u)];
}
void Upd(int u,int L,int R,int x,int y)
{
	if(L==R)
	{
		t[u].Clear(),A[L]^=y;
		t[u].Ins(A[L]);
		return;
	}
	if(x<=Mid)Upd(Ls(u),L,Mid,x,y);
	else Upd(Rs(u),Mid+1,R,x,y);
	t[u]=t[Ls(u)]+t[Rs(u)];
}
Node Qry(int u,int L,int R,int l,int r)
{
	if(R<l||r<L)return E;
	if(l<=L&&R<=r)return t[u];
	return Qry(Ls(u),L,Mid,l,r)+Qry(Rs(u),Mid+1,R,l,r);
}
struct BIT
{
	int t[N];
	inline int LB(int x){return x&-x;}
	inline void Upd(int x,int k){for(int i=x;i<=n;i+=LB(i))t[i]^=k;}
	inline int Qry(int x){int Ans=0;for(int i=x;i;i-=LB(i))Ans^=t[i];return Ans;}
}T;
int main()
{
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++)scanf("%d",&A[i]);
	for(int i=n;i>=1;i--)A[i]^=A[i-1];
	for(int i=1;i<=n;i++)T.Upd(i,A[i]);
	Bt(All);
	while(m--)
	{
		int o,L,R,v;
		scanf("%d%d%d%d",&o,&L,&R,&v);
		if(o==1)
		{
			T.Upd(L,v),T.Upd(R+1,v);
			Upd(All,L,v);if(R+1<=n)Upd(All,R+1,v);
		}
		else
		{
			int K=T.Qry(L);
			if(L==R)printf("%d\n",max(K^v,v));
			else
			{
				Node Ans=Qry(All,L+1,R);
				Ans.Ins(K);
				for(int i=M;i>=0;i--)
				{
					if((Ans.A[i]^v)>v)v^=Ans.A[i];
				}
				printf("%d\n",v);
			}
		}
	}
}*/

Details

Tip: Click on the bar to expand more detailed information

Pretests


Final Tests

Test #1:

score: 5
Accepted
time: 1368ms
memory: 22220kb

input:

50000 50000
31179799 114241877 344633821 372714973 230312455 54442881 743986501 403417568 437989818 242266005 162313393 119596298 802563169 346729208 70449054 332704451 50097201 32417565 110908823 113642833 647558561 3852851 14708161 50106211 99010801 13504275 565360091 100313641 622123725 102516520...

output:

1073676287
839777791
931511783
1073741823
974634479
839180287
1051000807
868654591
993279463
994016759
867565047
1069866471
708296183
1042791935
1073741823
781590015
706682367
723336703
713883631
868539895
931020279
859267047
939417599
858185727
1073741823
661036527
657743863
995917287
598195703
793...

result:

ok 24998 numbers

Test #2:

score: 5
Accepted
time: 1311ms
memory: 22136kb

input:

50000 50000
50191383 255668815 17359782 559851761 48398577 464475964 64138525 588688841 23168953 152455969 50857269 12943813 237308289 566887222 92993715 377761 206948668 672721426 337127621 14563393 305075876 491480377 43026668 562085057 572406073 209498100 181655761 250331418 294297488 129883754 1...

output:

1046475827
1035958205
771388439
794490837
1073741309
794818241
777977645
784301745
786068829
782204425
1018853347
748387701
1067120379
1067415359
1021312235
1023114429
1023308975
1017116345
1058700921
1073379097
788168699
1059058885
1069481047
1025244227
1060893965
1067152737
773586149
763032683
760...

result:

ok 24977 numbers

Test #3:

score: 5
Accepted
time: 1868ms
memory: 22132kb

input:

50000 50000
45592321 723107093 238924558 61566842 558837517 459140217 96117507 787963816 172819329 140591413 6128010 105275171 150082305 490019492 228910617 348887835 230557243 661570579 17810457 188103583 341193363 331759114 524100767 139296641 472804661 304165042 419334565 522929332 301779246 4101...

output:

1073708991
1065353145
1073700799
1065312251
1073700799
1065345021
1065312249
1006591995
1073733561
1073700795
1073741759
1073741759
1073700795
1073733563
1065320377
1073709049
1065320441
1006591933
1006600121
1073708989
1073708991
1006624701
1073741759
1073709049
1073700799
1065312253
1065320383
100...

result:

ok 24996 numbers

Test #4:

score: 5
Accepted
time: 1731ms
memory: 22128kb

input:

50000 50000
142514023 290298121 445693711 613169647 1512969 454297297 167666446 107480659 117953017 704284369 199699025 246977326 728512799 301006812 50560453 6898663 7478213 314191753 29465651 350102363 702611353 676291175 221488114 690750169 225956263 74927773 463689782 18063445 61777985 353346160...

output:

535559167
434894847
503054335
939260927
1073479679
938472447
871364607
963378175
837547007
896270335
871103487
896532479
930871295
829423615
905707519
1040187391
930871295
1006631935
963376127
1072692223
896268287
1072690175
426770431
1073741823
528218111
1006367743
436206591
535560191
1073741823
53...

result:

ok 24999 numbers

Test #5:

score: 5
Accepted
time: 1592ms
memory: 22252kb

input:

50000 50000
38636353 369233879 258979321 19150856 22388605 450204191 661282809 657958373 386335699 775081723 21060205 110887875 172277053 154925281 573310841 159185285 238085443 250906033 470085593 88470607 31855681 62619958 441867691 232876081 14636233 37365959 3418801 69358129 107442651 310622005 ...

output:

421523047
1065353087
1038085679
467595263
455012087
536870911
524218223
526380783
526381039
1031798527
1004469991
1073741823
968879847
1059061759
1031794279
1031798399
968880119
991887031
1065349047
1063251959
968814263
1040117423
1071640303
991952679
996142887
1006566959
1033830271
1031794607
96043...

result:

ok 25009 numbers

Test #6:

score: 5
Accepted
time: 1569ms
memory: 22112kb

input:

50000 50000
86178704 423891589 10011839 70152941 51620871 445887215 468414337 514842439 18206467 135478443 11925876 26359393 179879585 397337259 3841641 772147835 204837407 126413415 378194229 572371555 59307915 503669141 698767201 413685 624126654 563439077 243905645 289004365 95294691 221860362 95...

output:

293070783
469202878
523991038
1065349054
867401727
435908543
494893054
456359934
423360511
1031239615
838596542
536573886
1073444862
964655102
838821823
1039394814
1069017022
905670655
926377983
1064562686
972552127
1002399743
926908350
1060863935
494403583
532410302
527953854
523497470
498825215
49...

result:

ok 25012 numbers

Test #7:

score: 5
Accepted
time: 980ms
memory: 22076kb

input:

50000 50000
31574866 93779137 250850839 679008513 383467207 440241427 4483235 479284056 64869329 101606593 114043465 96946641 193254511 235979793 115045588 42945813 219643773 681402601 80041117 63590946 252881551 47437273 219019249 26131582 253159588 218799239 243742971 101771618 591600136 224252473...

output:

58646273
87384909
83329665
374679586
402441149
427584469
1071640575
464977798
301898942
515297928
660532545
78997958
777969438
337566486
253081151
373267107
259925849
431970375
339657177
660468049
1006486409
691412077
696140241
141952458
549260904
273962133
141874341
901005483
332684859
192249694
24...

result:

ok 25022 numbers

Test #8:

score: 5
Accepted
time: 957ms
memory: 22128kb

input:

50000 50000
29207566 62994571 431557366 82962025 2797642 436671271 44633175 432901 139393591 244748321 279475744 811416666 344924833 85423661 11154361 69431391 650985226 267951043 273878287 846296165 70510697 310774005 480946186 102327625 275150261 462644001 47702889 520450885 32676119 637653537 782...

output:

459850569
606648761
159361001
666460577
998244218
790348605
598300541
554288421
642732947
691989425
227377189
98261383
282691183
402187226
1073741823
115953313
259529959
240123430
1055796068
875169329
663682521
146482289
168613424
502094890
250168785
925422673
849217801
644755265
934865440
467447971...

result:

ok 25020 numbers

Test #9:

score: 5
Accepted
time: 2012ms
memory: 22256kb

input:

50000 50000
16821892 93624961 96121405 280800241 198744517 300655951 278230789 464118929 157294401 4693326 118148451 109053825 1087363 72632738 125745361 72234053 335399229 37216741 232925806 675320977 21314515 741119281 1461316 365163289 482695768 38264121 385152001 172962945 188034063 146115407 27...

output:

1040187135
1040187387
1040187391
1073741535
1073741567
1073741787
1073741823
1073741531
1073741567
1073741819
1073741823
1073741791
1073741535
1073741819
1073741567
1040187387
1040187099
1040187355
1073741567
1040187135
1073741823
1073741823
1073741787
1073741819
1073741535
1073741787
1073741791
107...

result:

ok 25011 numbers

Test #10:

score: 5
Accepted
time: 1934ms
memory: 22156kb

input:

50000 50000
67336913 140731414 496614966 1764957 455582602 291631819 90035947 227953922 481562929 293948349 5139937 595534617 349972159 24162145 657032661 53982561 123102520 105937417 242522065 362894841 24379871 77076097 149494061 18245217 65375543 389470733 200585941 560858497 112594166 40279716 8...

output:

1072689151
1070589951
1073741823
1071638527
1071642623
1071640575
1070596095
1039138815
1073741823
1072687103
1073737727
1073741823
1040181247
1040181247
1073735679
1073735679
1070591999
1073737727
1072691199
1073735679
1073739775
1071644671
1073741823
1071644671
1073737727
1071644671
1073741823
107...

result:

ok 24997 numbers

Test #11:

score: 5
Accepted
time: 2250ms
memory: 22252kb

input:

50000 50000
79158319 412596955 24754726 410081189 110594017 155003275 252116605 223305179 8440469 56633976 222352805 603473089 376245 291765617 365989 195291292 174421897 132028495 110616532 126890773 12859737 14290431 43463861 375427441 325283389 161818593 237740237 555311542 326295688 374054719 97...

output:

1073741823
1073741821
1073741821
1073741821
1073741823
1073741823
1073741823
1073741823
1073741823
1073741823
1073741823
1073741823
1073741823
1073741823
1073741821
1073741821
1073741823
1073741823
1073741823
1073741823
1073741823
1073741823
1073741823
1073741823
1073741823
1073741823
1073741823
107...

result:

ok 24829 numbers

Test #12:

score: 5
Accepted
time: 2234ms
memory: 22264kb

input:

50000 50000
74097251 27163744 642451369 515854177 104688937 136982116 312916969 349769671 530909101 328547476 200582786 583540882 682724002 278814383 493923261 36332506 327224668 65785285 122374545 447220723 85005961 288379911 197604793 603237466 351790527 79646641 296026096 64453264 118455402 32061...

output:

671088607
671088639
805306367
1073741823
1073741823
805306367
805306367
805306335
1073741823
1073741791
939524095
1073741823
1073741823
805306367
1073741823
1073741823
1073741823
1073741823
1073741823
1073741823
1073741823
1073741823
1073741791
1073741823
1073741823
1073741823
1073741823
1073741823
...

result:

ok 25148 numbers

Test #13:

score: 5
Accepted
time: 2182ms
memory: 22208kb

input:

50000 50000
13698289 473938249 133019680 18126313 466423036 121610497 323302267 281261457 20754331 142518409 155592217 49725001 629264227 122846985 137988865 283532410 304786625 298737391 382109473 44755003 422754606 49627033 487550001 13641226 841862809 525076426 376607699 214785 138882181 53410736...

output:

939393021
905833469
1073741823
1073741823
1073725437
1073741821
1073721343
1073741823
1073741823
1073741823
1073610749
1073741823
401583101
402521085
1073740799
1073740799
1073741823
1073737727
1073741823
1073741823
536738815
1073741823
1073741823
1073741823
1073741823
1073741823
536722429
107372441...

result:

ok 24914 numbers

Test #14:

score: 5
Accepted
time: 1935ms
memory: 22152kb

input:

50000 50000
121924805 132552543 55932977 529466113 156416810 105894489 80132667 276789517 21844449 74386081 145422775 18045581 39906120 134988687 693694708 174475353 10711173 11035585 700844837 565383941 132442847 128942490 185086492 409657585 8516131 195042217 442379051 148234843 686733721 59377690...

output:

334494167
301969379
1072149101
971750645
938195787
1072674035
1073213395
1039400031
972551775
1072949973
1072951507
1073738437
1072690781
1006614381
1072146013
1073725019
973056073
1073718987
1039120091
1038596819
1006628971
1073739861
1073741823
1040179649
1073741823
1073741691
1073741659
107374181...

result:

ok 24898 numbers

Test #15:

score: 5
Accepted
time: 1775ms
memory: 22076kb

input:

50000 50000
61280857 204782976 308600566 539973778 589786536 89849553 234984868 415625134 247822975 136561465 364921557 89316941 15657553 577178317 14003689 622798912 28633557 382901149 116449693 617781329 288826961 10059525 303368767 259497129 150759190 18358792 493373185 32507165 48320287 59370370...

output:

316520199
536870557
444154898
928507020
930371165
521266609
259477208
385860771
528352781
1056771923
536870845
1073724539
1073735237
1073657356
1073636644
1060884212
249142460
517158411
1073708055
901692963
1073336160
1067265155
909561497
1073741776
1068953252
1073741787
1073673704
429403888
1073741...

result:

ok 25178 numbers

Test #16:

score: 5
Accepted
time: 1446ms
memory: 22152kb

input:

50000 50000
104425007 676517185 266703753 42646111 638376328 36363511 159789651 27762649 342766931 236161641 17549185 504330301 220497217 46623601 1591006 20295001 746813206 343852069 77243741 332028545 130078675 110819957 113952817 351456193 237360004 7997101 79637929 987433597 232951469 858917710 ...

output:

500474869
989851647
1073541119
905445279
1006563316
1073741823
1073741823
1073734367
1073741823
1073610684
1073670652
1073741823
1073741823
1073741823
1073741821
1073741823
1073741823
1071560381
1073741822
1073741823
1073741823
1073741823
1073741726
1073741823
1073741823
1073741823
1073741823
107374...

result:

ok 25155 numbers

Test #17:

score: 5
Accepted
time: 1659ms
memory: 22260kb

input:

50000 50000
42913956 246237526 255175531 668431769 272273490 18949731 57900073 661162982 348668625 244851246 454081790 35439426 97264571 126727587 83797779 226760051 66291781 57487949 312590209 427403614 600282853 6493669 306419457 142640377 117110161 771468826 48014317 45762545 856607158 38478624 1...

output:

1073741823
1065222142
1073741823
1073741823
1073610478
1073741823
1073741823
1073741823
1060099962
1073741823
939458559
1073741823
939524094
939524094
1073741823
1073741823
1073741823
1073741823
1073733630
1073741823
1073741823
1073741823
1073741823
1073676269
1073741807
1073741823
1073741823
107374...

result:

ok 24934 numbers

Test #18:

score: 5
Accepted
time: 2127ms
memory: 22264kb

input:

50000 50000
164769617 163668674 201392353 807135891 28077801 111357 61489630 186159256 26197731 1483084 649516655 374498681 553778956 365839240 352926001 340829251 82656419 180464756 177176471 435452235 51172563 433576 252090976 2271041 7900873 27634566 64009992 420007141 548711155 129909801 1275601...

output:

1073733599
1073741823
1073741823
1073741823
1069547517
1073733629
1073733631
1069539325
1069539293
1073741823
1069539295
1073741823
1073741823
1073741823
939524063
1073733631
939524063
1073741823
1073741791
1073741823
1069539295
1069539327
1073733597
1073741823
1073741823
1073741823
1073741823
10737...

result:

ok 25037 numbers

Test #19:

score: 5
Accepted
time: 1936ms
memory: 22216kb

input:

50000 50000
156310103 530401186 520269 864496885 402233958 1124551 564970253 130086399 140795617 110033251 144775075 377461041 594464081 107829537 54587824 108769701 696225511 35986385 546707233 257053743 376970959 420980432 147402793 578668753 66141976 43283021 645259998 502348157 289559502 7142926...

output:

1054834651
1050206671
1006464479
1071247095
1067176703
1073741823
1073736919
1073741823
1073741823
1073733615
968487675
1073741823
951599319
1073741823
1073741823
1073741823
1073741823
1071601647
1073741823
1073702647
1073741823
1073741823
1073701855
1073741823
1073738443
1073741823
1073741823
10737...

result:

ok 24974 numbers

Test #20:

score: 5
Accepted
time: 1913ms
memory: 22196kb

input:

50000 50000
86652187 172925933 400148781 172827271 103244764 1230016 35222201 811910325 51778693 28360788 306332251 57112561 22634991 491541601 241108845 105270844 49851322 935374771 11721997 328796173 117272806 127489410 377611521 22919071 314038814 371920051 691765728 44920898 220290895 111709561 ...

output:

939523567
899870666
1073741823
939524095
1073544703
1073180145
1073741823
1073732847
667667449
1073741823
1035325413
1069479144
955442637
1056964077
1073741823
736813733
1073736067
1073479652
1073741823
1052114681
1073741823
1073741823
1073741823
1073741823
1073702887
1073741823
1073741807
107367422...

result:

ok 24985 numbers