QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#576366#5414. Stop, Yesterday Please No MorexinlengweishangRE 4ms16064kbC++202.7kb2024-09-19 20:05:412024-09-19 20:05:41

Judging History

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

  • [2024-09-19 20:05:41]
  • 评测
  • 测评结果:RE
  • 用时:4ms
  • 内存:16064kb
  • [2024-09-19 20:05:41]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
map<char,int> gox,goy;
	int mp[2020][2020],f[2020][2020];
void slove(){
	char s[100010];
	int dx=0,dy=0;
	int minx=0,maxx=0,miny=0,maxy=0,y,x,k;
	scanf("%d %d %d",&y,&x,&k);
	scanf("%s",s);
	mp[dy+1010][dx+1010]=1;
	for(int i=0;s[i]!='\0';i++){
		dx+=gox[s[i]];
		dy+=goy[s[i]];
		minx=min(minx,dx);
		maxx=max(maxx,dx);
		miny=min(miny,dy);
		maxy=max(maxy,dy);
		if(-dy+1010<=0||-dy+1010>=2019||-dx+1010<=0||-dx+1010>=2019) break;
		mp[-dy+1010][-dx+1010]=1;
//		printf("%d %d\n",-dy,-dx);
	}
	int ymax=y-maxy,ymin=-miny;
	int xmax=x-maxx,xmin=-minx;
	int ans=(ymax-ymin)*(xmax-xmin);
//	printf("%d %d %d %d\n",ymax,ymin,xmax,xmin);
		maxy=min(maxy,1001);
		maxx=min(maxx,1001);
		miny=max(-1001,miny);
		minx=max(-1001,minx);
	if(k==315808) printf("%d %d %d %d\n",ymax,ymin,xmax,xmin);
	if((ymax-ymin)<=0||(xmax-xmin)<=0){
		if(k==0) printf("%d\n",x*y);
		else
		printf("0\n");
	for(int fy=-maxy;fy<=-miny;fy++){
		for(int fx=-maxx;fx<=-minx;fx++){
			mp[fy+1010][fx+1010]=0;
		}
	}
		return ;
	}
	ans-=k;
	if(ans<0){
		printf("0\n");
	for(int fy=-maxy;fy<=-miny;fy++){
		for(int fx=-maxx;fx<=-minx;fx++){
			mp[fy+1010][fx+1010]=0;
		}
	}
		return ;
	}
	int tt=0;
	for(int fy=max(-y+ymin-2,-maxy-1);fy<=ymax;fy++){
		for(int fx=max(-x+xmin-2,-maxx-1);fx<=xmax;fx++){
			f[fy+1010][fx+1010]=f[fy-1+1010][fx+1010]+f[fy+1010][fx-1+1010]-f[fy-1+1010][fx-1+1010];
			if(mp[fy+1010][fx+1010]) f[fy+1010][fx+1010]++;
//			printf("%d %d %d %d\n",fy,fx,mp[fy+1010][fx+1010],f[fy+1010][fx+1010]);
		}
	}
	for(int fy=0;fy<y;fy++){
		for(int fx=0;fx<x;fx++){
//			printf("f[%d][%d]=%d f[%d][%d]=%d ",-fy+ymax-1,-fx+xmax-1,f[-fy+ymax-1+1010][-fx+xmax-1+1010],-fy+ymax-1,-fx+xmin-1,f[-fy+ymax-1+1010][-fx+xmin-1+1010]);
//			printf("f[%d][%d]=%d f[%d][%d]=%d\n",-fy+ymin-1,-fx+xmax-1,f[-fy+ymin-1+1010][-fx+xmax-1+1010],-fy+ymin-1,-fx+xmin-1,f[-fy+ymin-1+1010][-fx+xmin-1+1010]);
			if(f[-fy+ymax-1+1010][-fx+xmax-1+1010]-f[-fy+ymax-1+1010][-fx+xmin-1+1010]-f[-fy+ymin-1+1010][-fx+xmax-1+1010]+f[-fy+ymin-1+1010][-fx+xmin-1+1010]==ans) tt++;
		}
	}
	for(int fy=max(-y+ymin-2,-maxy-1)-1;fy<=ymax;fy++){
		for(int fx=max(-x+xmin-2,-maxx-1)-1;fx<=xmax;fx++){
			f[fy+1010][fx+1010]=0;
//			printf("%d %d %d %d\n",fy,fx,mp[fy+1010][fx+1010],f[fy+1010][fx+1010]);
		}
	}
	for(int fy=-maxy;fy<=-miny;fy++){
		for(int fx=-maxx;fx<=-minx;fx++){
			mp[fy+1010][fx+1010]=0;
		}
	}
	printf("%d\n",tt);
	return ;
}

int main(){
	gox['U']=0,goy['U']=1;
	gox['D']=0,goy['D']=-1;
	gox['L']=-1,goy['L']=0;
	gox['R']=1,goy['R']=0;
	int T=1;
	scanf("%d",&T); 
	for(int i=1;i<=T;i++) slove();
	return 0;
	
}

详细

Test #1:

score: 100
Accepted
time: 1ms
memory: 5936kb

input:

3
4 5 3
ULDDRR
4 5 0
UUUUUUU
4 5 10
UUUUUUU

output:

2
20
0

result:

ok 3 number(s): "2 20 0"

Test #2:

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

input:

1060
19 12 0
UDLDDUUUUDDDLLRDUDUURULUUUDRDUDRDRLRLRLULULLLDLDDRLUUUURUUUDDRLLRUUUDULURUULLRDRLRDDURDUUURRRLURLRUULRRUDURDLUUURDLURDDLUUURDDRLLURRDLRUDLRDRLLRRDRDDLDRURRRLUDULLLRUUDLRRURRDLLRRRDLLRDDDLRLRURURDDDL
11 1 0
UR
3 18 33
UDRLR
17 11 132
RLDRDLDRUU
6 10 13
UULUDDLRDLUUDLDD
1 15 0
D
6 20 50
D...

output:

228
11
20
99
18
15
34
240
15
0
0
13
14
18
26
16
1
19
108
8
2
2
3
7
0
30
16
21
0
8
10
9
15
5
320
11
7
3
0
0
12
0
11
0
0
14
0
22
36
51
23
7
6
4
2
48
28
8
63
22
49
13
10
4
108
10
18
44
0
15
9
0
4
30
14
99
105
10
14
17
0
66
10
11
28
52
34
56
33
14
56
90
14
0
121
3
48
30
36
13
0
30
7
8
3
11
16
45
20
34
0...

result:

ok 1060 numbers

Test #3:

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

input:

1
1000 1000 979065
DDUULULUDULLULLDLUULURRLDURLRDLRRUURUUUDLRLUUDUUDUDLLDDDULU

output:

958416

result:

ok 1 number(s): "958416"

Test #4:

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

input:

1
1000 1000 943471
LRLDLURLDLRDRDUULULRDDLLRURDUURLLDDLDLDDLLLUUURLDRUDRLLUUUUUDLUUDLURURRDLRLRRRLULRRULURLRRDLDRLUDRRLDDLUDRRLLUDLLLRDULRRRRLDUUDRDLULUUUUDRRDULUDLLUUDLDURDRRLRRLDRLDDRURURLUULRRLDLLRLRDRRUULDLDLULLDLLRULLRUULURDURRLUUDUULLULDLRUDDLRLRLLUDDDLLLUDRRLDDULRRURRDURDDRDLLULRLULURLRDLLURD...

output:

889224

result:

ok 1 number(s): "889224"

Test #5:

score: -100
Runtime Error

input:

1
1000 1000 315808
LLRURURRDDDULLDDUDRDLRLLLDDDLUDRDURLDULRLRULUUDLUULUUDULLLLDDURLDUULUUDLLDLLDRUDUULRLLRLRUURLRLULLDDLLDUDLLRUUDRLDLUULDLLDRRRURDULLDRRRDURURDRLDURURUDLURLDURRLRRUDUDURDRLRRRDLRRURLURUDRRLDLRULLDLUURDURLURLLRDLRDRUURURDRUDUUUDLRRLUDLUUDUDDRRDUULUUDDRLLULDUUDRURRDRLULRLULDURLURUDLLD...

output:


result: