QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#867410#9685. nim 游戏lgvc#16 1177ms11036kbC++234.0kb2025-01-23 15:38:012025-01-23 15:38:02

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 15:38:02]
  • 评测
  • 测评结果:16
  • 用时:1177ms
  • 内存:11036kb
  • [2025-01-23 15:38:01]
  • 提交

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[1000009],b[1000009];
#define LL long long
LL sv() {
	LL aq=0;
	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)) 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;	
}
struct n_t{
	int a,b;
};
std::unordered_map<int,int> vi;
std::vector<n_t> t[10009];
int ct;
void cl() {
	if(ct==M) return;
	int vm=0;
	for(int j=1;j<=N;j++) {
		vm=(vm*137+(b[j]%1145141))%10000000000000061ll;
	}
	if(vi[vm]) return;
	vi[vm]=1;
	ct++;
	for(int j=1;j<=N;j++) {
		if(a[j]!=b[j]) {
			t[ct].push_back((n_t){j,a[j]-b[j]});
		}
	}
}
void qj(int i) {	
	if(i==-1) {
		cl();
		return;
	}
	LL aq=0;
	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);
			}
		}
		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;
					qj(i-1);
					if(ct==M) return;
					a[j]-=(1ll<<i)-x;
				}
			}
		}
	} else {
		qj(i-1);
	}
	if(ct==M) return;
}
#define INF_LL 0x3f3f3f3f3f3f3f3f
signed main(void) {
	C=read();T=read();
	while(T--) {
		vi.clear();
		N=read();M=read();
		ct=0;
		int 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;
		}
		long long ans=(1ll<<62)-1;
		for(int j=60;j>=0;j--) {
			if(ss>=(1ll<<j+1)) continue;
			int as=(1ll<<60)-1;
			for(int i=1;i<=N;i++) {
				if(((a[i]>>j)&1)==0) {
					int vv=(a[i]&((1ll<<j)-1));
					as=std::min(as,(1ll<<j)-vv);
				}
			}
			for(int i=1;i<=N;i++) {
				if(((a[i]>>j)&1)==0) {
					int vv=(a[i]&((1ll<<j)-1));
					if(as==(1ll<<j)-vv) {
						a[i]+=(1ll<<j)-vv;
						ans=std::min(ans,sv()+(1ll<<j)-vv);
						break;
					}
				}
			}
		}
		for(int j=60;j>=0;j--) {
			if(ss>=(1ll<<j+1)) continue;
			int as=(1ll<<60)-1;
			for(int i=1;i<=N;i++) {
				if(((a[i]>>j)&1)==0) {
					int vv=(a[i]&((1ll<<j)-1));
					as=std::min(as,(1ll<<j)-vv);
				}
			}
			for(int i=1;i<=N;i++) {
				if(((a[i]>>j)&1)==0) {
					int vv=(a[i]&((1ll<<j)-1));
					int ff=0;
					if(as==(1ll<<j)-vv) {
						a[i]+=(1ll<<j)-vv;
						if(ff||(sv()+(1ll<<j)-vv==ans)) {
							ff=1;
							a[i]+=(1ll<<j)-vv;
							qj(60);
							if(ct==M) break;
							a[i]-=(1ll<<j)-vv;
						} else {
							break;
						}
					}
				}
			}
			if(ct==M) break;
		}
		printf("%lld\n%lld\n",ans,ct);
		for(int i=1;i<=ct;i++) {
			printf("%lld\n",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: 78ms
memory: 10300kb

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: 6
Acceptable Answer

Test #2:

score: 6
Acceptable Answer
time: 1ms
memory: 8024kb

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
1
2
2 3 
1 1 
3
1
2
1 5 
1 2 
2
1
2
4 5 
1 1 

result:

points 0.5 right answer but not right solutions at 4th solution

Test #3:

score: 6
Acceptable Answer
time: 0ms
memory: 8020kb

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
1
3
1 4 5 
4 1 1 
1
1
1
1 
1 
8
1
3
1 2 5 
2 3 3 
2
1
2
1 5 
1 1 
10
1
2
1 4 
3 7 

result:

points 0.5 right answer but not right solutions at 5th solution

Test #4:

score: 6
Acceptable Answer
time: 0ms
memory: 7888kb

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
1
2
1 5 
1 1 
8
1
1
1 
8 
4
1
2
2 5 
1 3 
1
1
1
2 
1 
1
1
1
1 
1 

result:

points 0.5 right answer but not right solutions at 5th solution

Subtask #3:

score: 6
Acceptable Answer

Dependency #2:

50%
Acceptable Answer

Test #5:

score: 6
Acceptable Answer
time: 0ms
memory: 8020kb

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
1
5
1 2 3 4 6 
1 19 1 1 124 
179
1
4
1 4 5 6 
30 27 93 29 
267
1
5
1 3 4 5 6 
1 1 71 5 189 
27
1
5
1 3 4 5 6 
5 8 1 12 1 
197
1
4
1 2 3 4 
40 155 1 1 

result:

points 0.5 right answer but not right solutions at 5th solution

Test #6:

score: 6
Acceptable Answer
time: 0ms
memory: 8016kb

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
1
5
1 2 3 5 6 
11 53 339 131 23 
195
1
5
1 2 3 4 5 
8 26 10 6 145 
69
1
3
1 3 5 
65 3 1 
33
1
3
1 3 6 
9 23 1 
204
1
4
1 2 5 6 
98 88 17 1 

result:

points 0.5 right answer but not right solutions at 5th solution

Test #7:

score: 6
Acceptable Answer
time: 0ms
memory: 8016kb

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
1
5
1 2 4 5 6 
12 10 30 19 105 
36
1
3
1 2 5 
4 5 27 
466
1
5
1 2 3 4 6 
57 178 89 60 82 
24
1
4
1 3 4 5 
5 1 17 1 
156
1
4
1 2 4 6 
32 104 18 2 

result:

points 0.5 right answer but not right solutions at 5th solution

Subtask #4:

score: 0
Time Limit Exceeded

Test #8:

score: 0
Time Limit Exceeded

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:


result:


Subtask #5:

score: 0
Wrong Answer

Test #18:

score: 12
Accepted
time: 363ms
memory: 11036kb

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: 0
Wrong Answer
time: 1177ms
memory: 8592kb

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
4 10 88 212 523 954 2474 5529 5764 8448 33798 38129 47454 49541 78515 
1 1 1 1 1 1 1 19 1 54 8212 139 1 2165 1364 
1607036
1
11
4 6 7 12 15 16 22 25 26 28 29 
65471 32512 6 520064 978944 6136 3836 1 4 60 2 
106
1
3
1 2 3 
41 20 45 
3
1
2
1 2 
1 2 
126
1
5
1 3 5 9 10 
1 12 7 60 46 
727
1
6...

result:

wrong answer jury has better answer

Subtask #6:

score: 0
Wrong Answer

Test #22:

score: 0
Wrong Answer
time: 145ms
memory: 7980kb

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
1
12
1 19 134 203 355 565 673 786 876 955 996 999 
1 1 5 2638 9 531 1 697 251113 10 5226 3995 
5
1
1
5 
5 
7
1
3
1 5 9 
1 4 2 
4
1
1
1 
4 
91693223
1
12
2 6 13 20 21 23 24 25 28 33 41 42 
3604448 1 1 67108862 14 128 1536 20971504 10 3 6656 60 
2097370
1
3
1 2 4 
514 8152 2088704 
31
1
4
2 4 1...

result:

wrong answer jury has better answer

Subtask #7:

score: 0
Skipped

Dependency #3:

50%
Acceptable Answer

Dependency #5:

0%

Subtask #8:

score: 0
Skipped

Dependency #7:

0%

Subtask #9:

score: 0
Skipped

Dependency #8:

0%