QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#867632#9685. nim 游戏lgvc56 1525ms56660kbC++234.0kb2025-01-23 20:43:062025-01-23 20:43:13

Judging History

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

  • [2025-01-27 09:19:35]
  • hack成功,自动添加数据
  • (/hack/1490)
  • [2025-01-27 08:19:11]
  • hack成功,自动添加数据
  • (/hack/1488)
  • [2025-01-26 18:55:44]
  • hack成功,自动添加数据
  • (/hack/1475)
  • [2025-01-23 20:43:13]
  • 评测
  • 测评结果:56
  • 用时:1525ms
  • 内存:56660kb
  • [2025-01-23 20:43:06]
  • 提交

answer

#include <bits/stdc++.h>
#define int long long
static char buf[1000000],*paa=buf,*pd=buf;
static char buf2[1000000],*pp=buf2;
#define getchar() paa==pd&&(pd=(paa=buf)+fread(buf,1,1000000,stdin),paa==pd)?EOF:*paa++
inline void pc(char ch){
	if(pp-buf2==1000000) fwrite(buf2,1,1000000,stdout),pp=buf2;
	*pp++=ch;
}
inline void pcc(){
	fwrite(buf2,1,pp-buf2,stdout);
	pp=buf2;
}
inline int read(void){
	int w=1;
	register int x(0);register char c(getchar());
	while(c<'0'||c>'9'){if(c=='-') w=-1;c=getchar();}
	while(c>='0'&&c<='9')x=(x<<1)+(x<<3)+(c^48),c=getchar();
	return w*x;
}
void write(int x){
	static int sta[20];
	int top=0;
	do{
		sta[top++]=x%10,x/=10;
	}while(x);
	while(top) pc(sta[--top]+48);
}
void we(int x){
	write(x);
	pc('\n');
}
int C,T,N,M,a[100009],b[100009],vf[100009],ss,p[62][100009];
struct n_t{
	int a,b;
};
std::vector<n_t> t[20009];
int ct,tx;
int qr(std::vector<n_t> tq) {
	int as=ss;
	for(int i=0;i<tq.size();i++) {
		as^=a[tq[i].a];
		as^=(a[tq[i].a]+tq[i].b);
	}
	return as;
}
inline bool cmp(n_t x,n_t y) {
	return x.a<y.a;
}
inline bool fd(int x,std::vector<n_t> y) {
	for(int i=0;i<y.size();i++) {
		if(y[i].a==x) return 1;
	}
	return 0;
}
int sv(std::vector<n_t> tq) {
	int aq=0;
	for(int i=1;i<=N;i++) a[i]=b[i];
	for(int i=0;i<tq.size();i++) a[tq[i].a]+=tq[i].b;
	for(int i=60;i>=0;i--) {
		bool ff=0;
		int ss=0;
		for(int j=1;j<=N;j++) {
			if((a[j]>>i)&1) ff^=1;
			ss^=a[j];
		}
		if(ff) {
			int ans=(1ll<<61);
			for(int j=1;j<=N;j++) {
				if((a[j]>>i)%2==0) {
					int x=(a[j]&((1ll<<i)-1));
					ans=std::min(ans,(1ll<<i)-x);
				}
			}
			if(ans==(1ll<<61)) {
				for(int i=1;i<=N;i++) a[i]=b[i];
				return (1ll<<62)-1;
			}
			for(int j=1;j<=N;j++) {
				if((a[j]>>i)%2==0) {
					int x=(a[j]&((1ll<<i)-1));
					if(ans==(1ll<<i)-x) {
						a[j]+=(1ll<<i)-x;
						aq+=(1ll<<i)-x;
						break;
					}
				}
			}
		}
	}	
	for(int i=1;i<=N;i++) a[i]=b[i];
	return aq;	
}
std::unordered_map<int,int> vi;
int vc(std::vector<n_t> tq) {
	tx++;
	for(int i=0;i<tq.size();i++) vf[tq[i].a]=tx;
	return tx;
}
void cl(std::vector<n_t> tq) {
	if(ct==M) return;
	std::sort(tq.begin(),tq.end(),cmp);
	int vm=tq.size();
	for(int j=0;j<tq.size();j++) {
		vm=(vm*137+tq[j].a)%10000000000000061ll;
		vm=(vm*137+tq[j].b)%10000000000000061ll;
	}
	if(vi[vm]) return;
	vi[vm]=1;
	ct++;
	t[ct]=tq;
}
bool qj(int i,std::vector<n_t> tq,int va) {	
	if(va!=sv(tq)) return 0;
	if(i==-1) {
		cl(tq);
		return 1;
	}
	if((qr(tq)>>i)&1) {
		//if(i==0) printf("!!!\n");
		int ans=(1ll<<61);
		for(int j=1;j<=N;j++) {
			int t=p[i][j];
			if(fd(t,tq)) continue;
			if((a[t]>>i)%2==0) {
			//	assert(t);
				int x=(a[t]&((1ll<<i)-1));
				tq.push_back((n_t){t,(1ll<<i)-x});
				if(!qj(i-1,tq,va-(1ll<<i)+x)) return 1;
				tq.pop_back();
				if(ct==M) return 1;
			} else break;
		}
		for(int j=0;j<tq.size();j++) {
			tq[j].b+=(1ll<<i);
			if(!qj(i-1,tq,va-(1ll<<i))) return 1;
			if(ct==M) return 1;
			tq[j].b-=(1ll<<i);
		}
	} else {
		qj(i-1,tq,va);
	}
	return 1;
}
#define INF_LL 0x3f3f3f3f3f3f3f3f
int tp;
bool cmq(int x,int y) {
	x=a[x];
	y=a[y];
	if(((x^y)>>tp)&1) 
		return (x&((1ll<<tp+1)-1))<(y&((1ll<<tp+1)-1));
	return (x&((1ll<<tp)-1))>(y&((1ll<<tp)-1));
}
signed main(void) {
	C=read();T=read();
	while(T--) {
		vi.clear();
		N=read();M=read();
		ct=0;
		ss=0;
		for(int i=1;i<=N;i++) {
			a[i]=read();
			b[i]=a[i];
			ss^=a[i];
		}
		if(ss==0) {
			printf("0\n1\n0\n\n\n");
			continue;
		}
		for(int i=0;i<=60;i++) {
			for(int j=1;j<=N;j++) p[i][j]=j;
			tp=i;
			std::sort(p[i]+1,p[i]+N+1,cmq);
			//if(i==1) printf("%d %d\n",p[i][1],p[i][2]);
		}
		std::vector<n_t> tq;
		int ans=sv(tq);
		qj(60,tq,ans);
		printf("%lld\n%lld\n",ans,ct);
		for(int i=1;i<=ct;i++) {
			printf("%lld\n",(int)t[i].size());
			for(int j=0;j<t[i].size();j++) printf("%lld ",t[i][j].a);
			printf("\n");
			for(int j=0;j<t[i].size();j++) printf("%lld ",t[i][j].b);
			printf("\n");
			t[i]=t[0];
		}	
	}
}

Details

Tip: Click on the bar to expand more detailed information

Subtask #1:

score: 4
Accepted

Test #1:

score: 4
Accepted
time: 127ms
memory: 55124kb

input:

1 10000
2 1
324097321 555675086
2 1
304655177 991244276
2 1
9980291 383616352
2 1
1071036550 795625380
2 1
682098056 68370721
2 1
969101726 685975156
2 1
973896269 354857775
2 1
196188000 606494155
2 1
754416123 467588829
2 1
495704303 558090120
2 1
618002000 491488050
2 1
741575237 9937018
2 1
1002...

output:

231577765
1
1
1 
231577765 
686589099
1
1
1 
686589099 
373636061
1
1
1 
373636061 
275411170
1
1
2 
275411170 
613727335
1
1
2 
613727335 
283126570
1
1
2 
283126570 
619038494
1
1
2 
619038494 
410306155
1
1
1 
410306155 
286827294
1
1
2 
286827294 
62385817
1
1
1 
62385817 
126513950
1
1
2 
12651...

result:

ok correct answer

Subtask #2:

score: 12
Accepted

Test #2:

score: 12
Accepted
time: 0ms
memory: 55128kb

input:

2 5
5 2000
0 13 3 4 10
5 2000
0 3 9 1 11
5 2000
0 13 7 3 5
5 2000
0 1 13 9 2
5 2000
0 8 14 7 13

output:

0
1
0


0
1
0


2
2
2
2 3 
1 1 
2
3 5 
1 1 
3
2
2
1 5 
1 2 
1
5 
3 
2
1
2
4 5 
1 1 

result:

ok correct answer

Test #3:

score: 12
Accepted
time: 1ms
memory: 55124kb

input:

2 5
5 2000
0 4 14 5 7
5 2000
0 2 15 0 12
5 2000
0 1 14 0 5
5 2000
0 13 4 12 3
5 2000
0 10 10 1 11

output:

6
2
3
1 4 5 
4 1 1 
2
4 5 
1 5 
1
4
1
1 
1 
1
2 
1 
1
4 
1 
1
5 
1 
8
8
3
1 2 5 
2 3 3 
3
2 4 5 
3 2 3 
2
2 5 
3 5 
2
2 5 
5 3 
3
1 2 5 
4 1 3 
3
2 4 5 
1 4 3 
2
2 5 
1 7 
2
2 5 
7 1 
2
4
2
1 5 
1 1 
2
3 5 
1 1 
2
4 5 
1 1 
1
5 
2 
10
13
3
1 2 4 
2 1 7 
3
1 3 4 
2 1 7 
2
1 4 
2 8 
2
1 4 
3 7 
2
1 4 ...

result:

ok correct answer

Test #4:

score: 12
Accepted
time: 2ms
memory: 55128kb

input:

2 5
5 2000
0 6 15 10 1
5 2000
0 15 0 13 10
5 2000
0 5 7 5 1
5 2000
0 13 3 2 15
5 2000
0 2 4 7 0

output:

2
5
2
1 5 
1 1 
2
2 5 
1 1 
2
4 5 
1 1 
1
5 
2 
1
1 
2 
8
2
1
1 
8 
1
3 
8 
4
2
2
2 5 
1 3 
2
4 5 
1 3 
1
1
1
2 
1 
1
4
1
1 
1 
1
2 
1 
1
3 
1 
1
5 
1 

result:

ok correct answer

Subtask #3:

score: 12
Accepted

Dependency #2:

100%
Accepted

Test #5:

score: 12
Accepted
time: 3ms
memory: 55296kb

input:

3 5
6 2000
0 45 517 811 107 132
6 2000
0 382 576 805 419 579
6 2000
0 379 809 441 331 67
6 2000
0 565 776 959 852 383
6 2000
0 613 383 829 47 441

output:

146
20
5
1 2 3 4 6 
1 19 1 1 124 
4
2 3 4 6 
19 1 1 125 
4
2 3 4 6 
20 1 1 124 
4
2 3 4 6 
19 1 2 124 
4
2 3 4 6 
19 2 1 124 
4
1 2 4 6 
2 19 1 124 
3
2 4 6 
19 1 126 
3
2 4 6 
21 1 124 
3
2 4 6 
19 3 124 
5
1 2 3 5 6 
1 19 1 1 124 
4
2 3 5 6 
19 1 1 125 
4
2 3 5 6 
20 1 1 124 
4
2 3 5 6 
19 1 2 124...

result:

ok correct answer

Test #6:

score: 12
Accepted
time: 1ms
memory: 55124kb

input:

3 5
6 2000
0 75 173 555 637 905
6 2000
0 934 118 906 367 728
6 2000
0 244 321 598 625 469
6 2000
0 573 489 24 480 459
6 2000
0 424 356 750 623 871

output:

557
483
5
1 2 3 5 6 
8 53 342 131 23 
5
1 2 3 5 6 
8 53 341 132 23 
5
1 2 3 5 6 
8 54 341 131 23 
5
1 2 3 5 6 
8 53 341 131 24 
5
1 2 3 5 6 
9 53 341 131 23 
5
1 2 3 5 6 
8 53 340 133 23 
5
1 2 3 5 6 
8 53 339 134 23 
5
1 2 3 5 6 
8 54 339 133 23 
5
1 2 3 5 6 
8 53 339 133 24 
5
1 2 3 5 6 
9 53 339 ...

result:

ok correct answer

Test #7:

score: 12
Accepted
time: 1ms
memory: 55380kb

input:

3 5
6 2000
0 886 972 226 813 407
6 2000
0 219 190 742 101 572
6 2000
0 590 423 516 1017 46
6 2000
0 388 807 207 205 647
6 2000
0 408 180 238 300 694

output:

176
25
5
1 2 4 5 6 
8 10 30 19 109 
5
1 2 4 5 6 
8 10 34 19 105 
5
1 2 4 5 6 
8 14 30 19 105 
5
1 2 4 5 6 
8 10 30 23 105 
5
1 2 4 5 6 
12 10 30 19 105 
5
1 2 4 5 6 
4 10 30 19 113 
4
2 4 5 6 
10 30 19 117 
4
2 4 5 6 
10 34 19 113 
4
2 4 5 6 
14 30 19 113 
4
2 4 5 6 
10 30 23 113 
5
1 2 4 5 6 
4 10 ...

result:

ok correct answer

Subtask #4:

score: 0
Wrong Answer

Test #8:

score: 0
Wrong Answer
time: 1458ms
memory: 56216kb

input:

4 257
100000 100
32768 65536 262144 32768 8388608 1048576 4 67108864 16384 32768 262144 8192 512 134217728 65536 4194304 262144 67108864 1024 262144 64 32 65536 2097152 268435456 1 2048 4194304 16777216 8 16384 2 2048 16777216 268435456 262144 1048576 8388608 16 268435456 2 128 4194304 262144 32768 ...

output:

303389274
100
13
4330 6806 12450 15412 16083 20338 30949 31755 45139 48217 59387 59608 74711 
1048576 262144 33554432 16384 8 2048 2 512 4096 16 64 65536 268435456 
13
4330 6806 12450 15412 16083 20338 31755 45139 48217 59387 59608 74711 86656 
1048576 262144 33554432 16384 8 2048 512 4096 16 64 655...

result:

wrong answer jury has better answer

Subtask #5:

score: 12
Accepted

Test #18:

score: 12
Accepted
time: 361ms
memory: 56052kb

input:

5 10000
10 1
0 1073741823 1073741823 1073741823 1073741823 1073741823 1073741823 1073741823 1073741823 1073741823
10 1
0 1073741823 1073741823 1073741823 1073741823 1073741823 1073741823 1073741823 1073741823 1073741823
10 1
0 1073741823 1073741823 1073741823 1073741823 1073741823 1073741823 1073741...

output:

1073741823
1
1
1 
1073741823 
1073741823
1
1
1 
1073741823 
1073741823
1
1
1 
1073741823 
1073741823
1
1
1 
1073741823 
1073741823
1
1
1 
1073741823 
1073741823
1
1
1 
1073741823 
1073741823
1
1
1 
1073741823 
1073741823
1
1
1 
1073741823 
1073741823
1
1
1 
1073741823 
1073741823
1
1
1 
1073741823 
...

result:

ok correct answer

Test #19:

score: 12
Accepted
time: 1452ms
memory: 55972kb

input:

5 2323
100000 1
0 3170633 888529329 347839787 101667249 273239696 1028446182 411994109 710973319 298677951 299452068 519308796 361451040 488605068 74238166 997794448 478367019 532094220 747266199 217905213 682359917 774814810 234838947 456387659 38459020 434013070 633290806 173828476 94076883 568288...

output:

11962
1
15
5529 8448 19231 33798 38129 43892 47454 49541 62846 73205 78515 86883 91162 95106 99572 
19 54 1 8212 139 1 1 2165 1 1 1364 1 1 1 1 
1607036
1
11
4 6 7 12 15 16 22 26 28 29 36 
65471 32512 6 520064 978944 6136 3836 4 60 2 1 
106
1
3
1 2 3 
32 29 45 
3
1
2
1 2 
1 2 
126
1
5
1 3 5 9 10 
1 1...

result:

ok correct answer

Test #20:

score: 12
Accepted
time: 1525ms
memory: 56660kb

input:

5 2205
100000 1
0 684191025 220215685 982495864 602362406 687396179 439432236 81065680 398068897 269754402 306183653 309939439 664994998 1011962742 338161922 629593565 926305057 1026259775 711874360 69406110 426672919 208267066 551253027 9384823 26156203 778817402 654214308 527029151 1065024353 2870...

output:

22539
1
18
1463 8561 9642 9986 11813 14681 19490 20042 20825 21599 38540 38873 41244 44467 65772 75575 89268 92825 
1 1 18405 1 5 1 1 1 1 2826 14 846 1 1 1 1 404 28 
5296170
1
10
3 8 9 11 12 16 19 20 30 38 
2 1048320 64 4194240 30 6142 31744 15360 16 252 
2997548
1
3
3 4 5 
7998 1031664 1957886 
10
...

result:

ok correct answer

Test #21:

score: 12
Accepted
time: 1503ms
memory: 56532kb

input:

5 2166
100000 1
0 58930516 543560994 783997157 728082180 789115629 549794748 81818067 214839912 203394814 711969322 908524000 570262778 992867922 359455295 88035653 412186516 937931728 331800409 545354553 535440658 894562512 657466952 555070606 469471475 1055263866 874958292 76960239 478302168 68009...

output:

8241
1
16
66 23578 24616 26786 29190 41382 46768 54258 55893 59272 61562 63038 68234 70775 72809 82425 
63 1 1 5 7798 1 1 156 1 1 1 1 192 1 4 14 
2846999
1
4
1 2 4 5 
131072 103522 2049874 562531 
1605
1
6
2 6 8 12 22 23 
1 96 1023 480 1 4 
21150
1
4
1 2 3 5 
32 13220 4050 3848 
13
1
2
1 2 
4 9 
0
1...

result:

ok correct answer

Subtask #6:

score: 16
Accepted

Test #22:

score: 16
Accepted
time: 10ms
memory: 54848kb

input:

6 23
1000 10
0 357293452 452461848 986047039 546588280 762710079 767831017 39741545 416114273 515599366 1018969624 603342125 928112286 1053016142 240953466 533088067 1028134429 504727014 371307863 834428873 968387878 478550336 1047217797 1046651542 777749850 866989319 92995163 251915198 363285573 10...

output:

264227
10
12
134 203 349 355 565 569 673 786 876 955 996 999 
5 2638 1 9 531 1 1 697 251113 10 5226 3995 
12
134 203 349 355 542 565 673 786 876 955 996 999 
5 2638 1 9 1 531 1 697 251113 10 5226 3995 
12
134 203 349 355 543 565 673 786 876 955 996 999 
5 2638 1 9 1 531 1 697 251113 10 5226 3995 
12...

result:

ok correct answer

Test #23:

score: 16
Accepted
time: 9ms
memory: 55116kb

input:

6 23
1000 10
0 978686021 287986921 276311856 889616598 739968417 1060147652 463275477 172393699 591333230 983197307 235514434 330494755 449056272 882229818 781111474 275587745 980041928 334198691 305313012 415758352 947298893 950211162 909723054 961622596 917454340 161928901 404346316 369133631 1038...

output:

709905
10
15
32 178 232 279 283 433 482 656 677 727 757 842 917 977 978 
56 1 1 3862 6 1 12836 4 1 47 1 693086 1 1 1 
15
32 178 243 279 283 433 482 656 677 727 757 842 917 977 978 
56 1 1 3862 6 1 12836 4 1 47 1 693086 1 1 1 
15
32 178 279 283 433 482 623 656 677 727 757 842 917 977 978 
56 1 3862 6...

result:

ok correct answer

Test #24:

score: 16
Accepted
time: 15ms
memory: 55012kb

input:

6 15
1000 10
0 631723071 149784582 965844254 515554472 887253148 467825521 981769969 1054193550 627909969 590277818 159342752 658063143 667914173 169490051 25536270 337269419 1056885019 980490575 750858271 553446484 347553447 376197986 1053224035 473470890 123586 97769047 761755924 510998818 2560945...

output:

737485
10
15
102 172 237 265 384 474 599 625 626 643 747 790 831 880 924 
1 27 1 227 215546 2917 6 7 1 1 87404 1600 16 41649 388082 
15
102 172 254 265 384 474 599 625 626 643 747 790 831 880 924 
1 27 1 227 215546 2917 6 7 1 1 87404 1600 16 41649 388082 
15
102 172 253 265 384 474 599 625 626 643 7...

result:

ok correct answer

Test #25:

score: 16
Accepted
time: 11ms
memory: 54992kb

input:

6 25
1000 10
0 751950140 901599329 987895071 306253500 278530668 539473653 911723672 948474628 722632384 369217860 428703545 999113214 567923990 53499297 1013528916 263060554 669297221 349021033 832596533 893306880 892438572 345611286 331257977 488113061 578929864 881846255 320356815 76057168 704694...

output:

1119212
10
14
97 122 215 236 303 431 528 552 555 576 717 887 920 950 
7 5641 149775 107 1 6002 26620 674 1 1237 6239 922903 1 4 
14
97 122 215 236 431 528 552 555 576 717 840 887 920 950 
7 5641 149775 107 6002 26620 674 1 1237 6239 1 922903 1 4 
14
97 122 215 236 352 431 528 552 555 576 717 887 920...

result:

ok correct answer

Test #26:

score: 16
Accepted
time: 7ms
memory: 55000kb

input:

6 2
1000 1
0 1073741823 1073741823 1073741823 1073741823 1073741823 1073741823 1073741823 1073741823 1073741823 1073741823 1073741823 1073741823 1073741823 1073741823 1073741823 1073741823 1073741823 1073741823 1073741823 1073741823 1073741823 1073741823 1073741823 1073741823 1073741823 1073741823 1...

output:

1073741823
1
1
1 
1073741823 
1073741823
1
1
1 
1073741823 

result:

ok correct answer

Subtask #7:

score: 0
Time Limit Exceeded

Dependency #3:

100%
Accepted

Dependency #5:

100%
Accepted

Dependency #6:

100%
Accepted

Test #27:

score: 0
Time Limit Exceeded

input:

7 195
100000 1000
0 828483622 617711013 242092397 1034026464 456205583 731635466 382894773 533786631 582730039 74863848 661821965 368857719 541353387 662605236 580923280 798012506 54823622 333416217 39292129 995195996 477140985 1014499425 362164396 970752859 879997855 96768859 1005365898 576674982 4...

output:


result:


Subtask #8:

score: 0
Skipped

Dependency #7:

0%

Subtask #9:

score: 0
Skipped

Dependency #8:

0%