QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#47423#4658. 移除石子feecle6418100 ✓212ms4952kbC++141.7kb2022-09-09 14:19:362022-09-09 14:19:37

Judging History

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

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2022-09-09 14:19:37]
  • 评测
  • 测评结果:100
  • 用时:212ms
  • 内存:4952kb
  • [2022-09-09 14:19:36]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef array<array<int,3>,3> S;
const int N=1e4,inf=1e9,K=100,mod=1e9+7;
map<S,int> id;
int g[N][5],tot,f[N],nf[N],n,m;
S to[N];
void u1(int &x,int y){x=min(x,y);}
void u2(int &x,int y){x+=y,(x>=mod&&(x-=mod));}
void dfs(S f){
	int I=id[f];
	for(int v=0;v<=4;v++){
		S nf;
		for(int i=0;i<3;i++)for(int j=0;j<3;j++)nf[i][j]=inf;
		for(int i=0;i<3;i++){
			for(int j=0;j<3;j++){
				for(int k=0;k<=i;k++){
					if(i+j-k>2)continue;
					for(int l=0;l<=2;l++){
						if(i+j-k==2&&l==2)continue;
						int nv=i+j+l;
						for(int tov=max(nv,v);tov<=v+2;tov++){
							if(nv==tov-1)continue;
							u1(nf[i+j-k][l],f[i][j]+tov-v);
						}
					}
				}
			}
		}
		bool bad=1;
		for(int i=0;i<3;i++)for(int j=0;j<3;j++)if(nf[i][j]<=K)bad=0;
		if(bad)continue;
		if(!id.count(nf))id[nf]=++tot,to[tot]=nf,dfs(nf);
		g[I][v]=id[nf];
	}
}
void Solve(){
	scanf("%d%d",&n,&m),memset(f,0,sizeof(f)),f[1]=1;
	bool all0=1,all1=1;
	for(int i=1,l,r;i<=n+1;i++){
		if(i<=n)scanf("%d%d",&l,&r);
		else l=r=0;
		memset(nf,0,sizeof(nf));
		for(int j=1;j<=tot;j++){
			if(!f[j])continue;
			for(int k=max(l,0),rk=min(r,3);k<=rk;k++)
				u2(nf[g[j][k]],f[j]);
			u2(nf[g[j][4]],1ll*f[j]*max(0,r-max(l,4)+1)%mod);
		}
		if(i<=n)all0&=(l==0),all1&=(l<=1&&r>=1);
		memcpy(f,nf,sizeof(f));
	}
	int ans=0;
	for(int i=1;i<=tot;i++){
		S tf=to[i];
		if(tf[0][0]<=m)u2(ans,f[i]);
	}
	if(m==1){
		if(all0)ans=(ans-1+mod)%mod;
		if(all1&&n==3)ans=(ans-1+mod)%mod;
	}
	cout<<ans<<'\n';
}
int main(){
	S fr;
	for(int i=0;i<3;i++)for(int j=0;j<3;j++)fr[i][j]=inf;
	fr[0][0]=0,id[fr]=++tot,to[tot]=fr;
	dfs(fr);
	int t;
	scanf("%d",&t);
	while(t--)Solve();
}

这程序好像有点Bug,我给组数据试试?

详细

Test #1:

score: 5
Accepted
time: 27ms
memory: 4828kb

input:

10
5 2
1 3
0 5
1 4
0 1
1 2
5 0
0 3
0 1
0 3
0 2
1 1
5 0
1 2
1 3
3 3
3 4
0 0
5 1
1 1
0 4
3 4
0 4
0 4
5 0
1 1
1 5
0 5
0 1
1 4
5 2
3 4
2 4
0 3
1 3
0 1
5 2
1 4
0 4
0 4
1 2
0 1
5 0
0 4
0 5
0 2
3 4
1 1
3 1
0 5
0 4
0 4
3 1
1 5
1 4
1 4

output:

288
20
10
246
138
144
400
99
148
79

result:

ok 10 numbers

Test #2:

score: 5
Accepted
time: 27ms
memory: 4808kb

input:

10
5 0
0 0
1 4
2 4
1 4
0 3
5 0
1 4
1 5
4 5
0 4
3 4
5 0
1 4
0 3
0 2
3 5
1 2
5 1
1 2
0 4
1 3
1 4
2 4
5 0
0 5
0 1
0 1
0 1
1 2
5 0
1 3
0 3
1 2
1 5
2 3
5 1
0 5
1 5
0 4
0 1
0 3
5 0
1 3
1 3
1 5
1 4
1 4
3 1
0 4
0 1
0 5
3 1
1 3
1 5
1 2

output:

155
392
167
359
26
165
1182
646
58
29

result:

ok 10 numbers

Test #3:

score: 5
Accepted
time: 22ms
memory: 4904kb

input:

10
5 2
0 5
0 3
0 3
1 4
2 4
5 0
1 3
1 4
0 1
4 4
1 5
5 1
0 3
0 5
1 1
1 2
2 4
5 0
1 5
1 4
1 4
1 3
3 4
5 0
1 2
1 4
3 4
1 3
0 4
5 2
1 3
1 3
0 5
1 5
3 3
5 2
0 5
0 4
1 3
1 4
2 3
5 0
0 3
1 1
1 1
0 2
1 2
3 1
0 4
0 4
0 5
3 1
1 3
1 4
1 3

output:

1152
77
144
450
224
270
720
12
148
35

result:

ok 10 numbers

Test #4:

score: 5
Accepted
time: 67ms
memory: 4952kb

input:

10
1000 0
1 1
4 4
5 5
0 0
2 2
1 1
810768785 810768785
4 4
3 3
2 2
3 3
145678201 145678201
539852093 539852093
3 3
824112952 824112952
3 3
929791266 929791266
3 3
3 3
3 3
0 0
2 2
4 4
4 4
3 3
194646042 194646042
2 2
4 4
3 3
922195284 922195284
676532270 676532270
3 3
3 3
3 3
2 2
5 5
0 0
749247771 7492...

output:

0
1
0
0
1
1
0
0
1
1

result:

ok 10 numbers

Test #5:

score: 5
Accepted
time: 69ms
memory: 4788kb

input:

10
1000 0
6 6
1 1
4 4
2 2
560230659 560230659
2 2
213604931 213604931
4 4
324411778 324411778
5 5
5 5
0 0
68050744 68050744
5 5
1 1
363300583 363300583
2 2
2 2
4 4
957157567 957157567
6 6
3 3
1 1
3 3
2 2
4 4
4 4
4 4
6 6
2 2
0 0
5 5
404555679 404555679
3 3
2 2
1 1
6 6
2 2
4 4
6 6
891397980 891397980
...

output:

0
0
0
1
1
0
0
1
1
1

result:

ok 10 numbers

Test #6:

score: 5
Accepted
time: 72ms
memory: 4808kb

input:

10
1000 69
1 1
1 1
4 4
2 2
1 1
4 4
2 2
1 1
4 4
1 1
0 0
0 0
0 0
0 0
2 2
3 3
1 1
2 2
3 3
3 3
0 0
4 4
3 3
1 1
0 0
2 2
80216297 80216297
1 1
2 2
367878274 367878274
174533945 174533945
746703557 746703557
2 2
245782009 245782009
4 4
0 0
3 3
2 2
0 0
4 4
3 3
1 1
3 3
2 2
2 2
0 0
0 0
114241517 114241517
0 0...

output:

1
0
0
1
1
0
1
1
0
0

result:

ok 10 numbers

Test #7:

score: 5
Accepted
time: 70ms
memory: 4784kb

input:

10
1000 65
3 3
3 3
1 1
3 3
1 1
2 2
2 2
2 2
0 0
1 1
0 0
0 0
3 3
4 4
373336720 373336720
1 1
1 1
4 4
1 1
2 2
1 1
2 2
0 0
4 4
1 1
1 1
1 1
0 0
1 1
1 1
0 0
252809300 252809300
707166173 707166173
1 1
960759336 960759336
2 2
2 2
0 0
3 3
0 0
3 3
0 0
4 4
0 0
1 1
2 2
2 2
1 1
1 1
0 0
780478034 780478034
0 0
4...

output:

1
0
0
1
0
0
1
1
0
0

result:

ok 10 numbers

Test #8:

score: 5
Accepted
time: 72ms
memory: 4948kb

input:

10
1000 48
0 0
1 1
2 2
13941343 13941343
2 2
2 2
0 0
265685928 265685928
0 0
1 1
1 1
3060608 3060608
2 2
0 0
0 0
0 0
1 1
15129724 15129724
0 0
4 4
1 1
297040447 297040447
1 1
3 3
0 0
2 2
1 1
4 4
2 2
1 1
0 0
934313429 934313429
1 1
1 1
1 1
0 0
0 0
1 1
686872027 686872027
1 1
1 1
352017933 352017933
0...

output:

1
0
0
1
1
1
0
0
0
0

result:

ok 10 numbers

Test #9:

score: 5
Accepted
time: 197ms
memory: 4808kb

input:

10
1000 0
1 3
0 367881929
0 908183395
0 294640584
0 130052878
0 460518566
0 380428363
1 6
0 617579265
1 855387669
0 2
0 2
0 4
0 730594613
2 275854270
0 1
0 4
0 5
0 151804972
0 567677095
0 479119369
0 665035693
0 3
0 1
0 1
0 3
0 985093649
0 1
0 255818414
0 4
0 1
0 163849171
0 525071507
3 823579180
0 ...

output:

173378122
136961982
916142335
254618610
127210945
688422027
194757687
199396796
90178999
86533905

result:

ok 10 numbers

Test #10:

score: 5
Accepted
time: 210ms
memory: 4944kb

input:

10
1000 0
0 220657533
0 490453431
0 663241659
0 3
0 5
0 417978574
4 7
0 641068595
0 1
0 4
0 132285008
0 788406229
0 139937681
0 3
0 969737879
3 444383529
1 443896824
0 836047684
2 3
0 3
1 420847062
0 663834045
0 2
0 578231941
0 5
0 1
0 604459134
0 4
0 955346381
0 360957147
4 525140508
0 3
1 15822405...

output:

222237218
898759263
640639324
538187759
29656948
29843021
97600405
189219923
850973942
765846801

result:

ok 10 numbers

Test #11:

score: 5
Accepted
time: 204ms
memory: 4732kb

input:

10
1000 0
2 678511582
0 154994295
0 5
2 6
0 1
1 2
0 4
0 196232388
0 1
0 3
0 13247534
0 5
7093249 957022507
1 4
0 906064888
1 2
0 5
1 4
0 256766734
0 636905132
0 370094191
0 2
0 117006010
0 4
0 59582976
1 634540188
0 4
0 677905036
0 5
0 400766826
1 5
3 8
0 665083613
0 4
0 5
0 2
0 730308274
0 89231895...

output:

179406276
724899518
957139040
561017296
993781901
7394650
851299544
397397425
256338857
375918555

result:

ok 10 numbers

Test #12:

score: 5
Accepted
time: 202ms
memory: 4904kb

input:

10
1000 0
0 3
0 5
1 3
0 2
0 377151268
0 4
0 434362897
1 962769308
0 89047812
1 136192105
0 441748730
0 237192940
1 465698860
0 42439355
1 5829347
349949910 802921919
2 5
0 3
1 2
0 390569672
1 607009222
0 512482679
0 416439678
0 3
0 912993280
0 3
3 340960525
0 1
0 688478781
0 5
0 1
1 4
0 712235930
0 ...

output:

319258319
704077987
334372886
88970718
825618506
89533635
834045134
197952117
262319440
924373409

result:

ok 10 numbers

Test #13:

score: 5
Accepted
time: 201ms
memory: 4800kb

input:

10
1000 0
0 1
0 4
0 4
0 2
0 3
4 8
1 809130801
0 187920166
0 2
0 3
0 254674697
0 649121331
0 197259413
0 192443143
0 917579552
0 49799772
1 302721613
0 723809824
0 4
0 932825140
1 2
1 4
0 1
0 939720825
0 1
0 652682854
0 292912959
0 426026563
0 969801845
1 3
0 3
0 4
882209199 882209204
0 379900439
0 2...

output:

108367557
582756296
340002669
368867033
956907932
609145813
884525075
197867228
497772463
543026922

result:

ok 10 numbers

Test #14:

score: 5
Accepted
time: 211ms
memory: 4808kb

input:

10
1000 47
0 6
0 7
0 6
1 1
0 8
2 9
1 7
0 8
0 7
3 5
0 7
0 4
0 10
0 6
0 6
0 10
0 7
1 1
0 10
0 1
0 7
1 8
0 10
1 2
0 9
0 7
0 1
1 10
0 3
0 7
0 9
0 2
0 9
0 0
0 9
0 7
0 7
1 2
0 0
1 6
0 9
0 6
0 6
1 2
0 2
0 1
1 6
0 10
1 10
0 9
3 6
0 6
0 7
1 9
0 8
0 10
1 1
1 10
0 0
0 8
0 3
0 6
0 4
0 0
0 9
0 6
0 10
0 9
1 8
0 1...

output:

738316084
851375644
215922397
796061309
613737649
625134896
763030167
895156394
390
629

result:

ok 10 numbers

Test #15:

score: 5
Accepted
time: 208ms
memory: 4780kb

input:

10
1000 99
1 10
0 9
0 8
0 10
1 6
0 7
0 9
1 10
0 6
0 7
0 7
0 9
0 8
0 3
0 9
1 4
0 6
0 9
0 9
0 7
0 10
1 8
1 6
0 6
0 8
0 6
0 9
1 1
0 4
0 0
0 0
0 0
0 1
0 6
0 2
1 7
0 9
0 3
0 7
1 6
0 10
0 9
0 10
1 10
0 3
1 9
0 7
0 10
0 7
0 1
0 0
0 10
0 10
1 9
0 7
1 10
0 6
0 2
0 6
0 8
0 6
1 10
0 7
0 6
0 9
0 10
0 5
0 6
1 10...

output:

733982136
102430704
60640349
118024157
199614437
344227954
456030385
641753587
439
47

result:

ok 10 numbers

Test #16:

score: 5
Accepted
time: 205ms
memory: 4780kb

input:

10
1000 94
0 27082101
1 2
0 5
0 182284057
0 2
0 854596927
0 486081504
0 1
4 212942070
2 4
0 4
0 5
0 2
0 937988325
0 839634252
259385372 259385374
0 3
1 520768268
0 3
0 609270333
0 838621534
0 384090136
1 3
0 667788367
0 389605576
0 992710428
0 960391094
0 1
2 658423697
1 2
0 273159245
0 4
4 31114796...

output:

870680517
115603606
316557289
9766681
341971672
699464798
673647918
579459822
470969116
513966924

result:

ok 10 numbers

Test #17:

score: 5
Accepted
time: 196ms
memory: 4904kb

input:

10
1000 99
1 558836520
0 4
0 3
0 534121003
0 5
0 264739171
0 379370191
0 4
0 100490264
0 2
0 3
1 619605387
0 2
0 3
0 5
4 5
1 294486083
1 2
3 990787247
0 1
1 256196937
0 3
0 2
0 166482225
0 5
0 1
0 5
0 109407731
0 4
0 5
0 3
0 180703250
0 3
0 129133161
0 5
2 7
0 264096332
0 1
0 5
0 726281357
0 1762581...

output:

607861904
949464630
310737889
901015114
63397672
78280034
546669719
323568666
599807376
682628680

result:

ok 10 numbers

Test #18:

score: 5
Accepted
time: 206ms
memory: 4788kb

input:

10
1000 100
0 3
0 1
1 6
740414081 740414084
1 357189447
1 743739464
0 4
0 1
0 5
0 1
0 30073625
0 4
0 2
0 542888320
0 514884644
1 3
1 305222417
0 386325593
0 1
0 3
1 157562404
0 366404826
0 4
0 3
1 619491195
0 5
0 196255155
1 4
1 4
3 8
2 3
1 6
0 5
0 3
0 5
0 1
0 5
0 642145333
0 2
0 181627666
0 2
0 820...

output:

4422166
693621079
976753856
661121801
145391180
904105062
226347471
501222662
228465436
73571647

result:

ok 10 numbers

Test #19:

score: 5
Accepted
time: 209ms
memory: 4948kb

input:

10
1000 55
0 364881620
0 1
0 851413241
1 4
4 700024576
0 876649436
0 357726767
0 404571776
1 2223463
0 817905335
1 2
0 5
0 4
0 4
0 3
0 847654812
0 3
0 361081695
0 4
0 850218128
0 5
1 4
0 390585804
0 741480334
0 5
0 469714353
0 2
3 7042948
0 427747116
0 2
0 1
0 2
0 2
0 2
0 732348976
0 206547221
0 915...

output:

129875514
536209979
184299929
663086436
741463676
512639422
296588360
884058530
90713199
112286467

result:

ok 10 numbers

Test #20:

score: 5
Accepted
time: 212ms
memory: 4740kb

input:

10
1000 99
0 4
0 579831503
0 2
1 21069180
0 124983788
0 4
0 356520474
1 211150192
0 4
0 204201013
0 247203842
0 4
1 6
1 3
1 2
3 7
0 3
1 760511272
0 5
4 7
2 5
0 1
1 946697431
0 3
0 689207096
0 1
1 4
1 3
1 3
0 549119893
3 6
1 5
0 2
0 2
1 536582539
1 6
0 282097774
1 6
0 942901239
0 2
0 5
0 777338255
0 ...

output:

237399696
903617229
705682333
31063859
490067931
459932342
46423067
801059201
35316932
780708950

result:

ok 10 numbers

Extra Test:

score: 0
Extra Test Passed