QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#563680#5414. Stop, Yesterday Please No MorexinlengweishangWA 64ms35852kbC++201.8kb2024-09-14 15:03:142024-09-14 15:03:17

Judging History

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

  • [2024-09-14 15:03:17]
  • 评测
  • 测评结果:WA
  • 用时:64ms
  • 内存:35852kb
  • [2024-09-14 15:03:14]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
char s[100010];
map<char,int> gox,goy;
void slove(){
int mp[2020][2020],f[2020][2020];
	int n,m,k,ln,lm;
	scanf("%d%d%d",&n,&m,&k);
	scanf("%s",s);
	ln=n;
	lm=m;
	int len=strlen(s);
	int fx=1010,fy=1010,dx=1010,dy=1010;
	int maxx=1010,minx=1010,miny=1010,maxy=1010;
		mp[dy][dx]=1;
	for(int i=0;i<len;i++){
		char c=s[i];
		fx+=gox[c],fy+=goy[c];
		dx-=gox[c],dy-=goy[c];
		maxx=max(fx,maxx);
		minx=min(fx,minx);
		maxy=max(fy,maxy);
		miny=min(fy,miny);
		if(dx>=0&&dx<=2010&&dy>=0&&dy<=2010)
		mp[dy][dx]=1;
	}
	m-=(maxx-1010)+(1010-minx);
	n-=(maxy-1010)+(1010-miny);
	m=max(0,m);
	n=max(0,n);
	maxx=min(2010,maxx);
	maxy=min(2010,maxy);
	minx=max(10,minx);
	miny=max(10,miny);
	int ans=n*m-k;
//    printf("%d %d\n",m,n);
	if(ans<0){
		printf("0\n");
		return ;
	}
	if(ans==0){
		printf("%d\n",ln*lm);
		return ;
	}
	/*
	printf("%d %d %d %d\n",maxy-1010,miny-1010,maxx-1010,minx-1010);
	for(int i=2020-maxy;i<=2020-miny;i++){
		for(int q=2020-maxx;q<=2020-minx;q++){
	        printf("%d %d mp:%d\n",i-1010,q-1010,mp[i][q]);
		}
	}
	*/
	for(int i=2020-maxy;i<=min(2010,2020-miny+n);i++){
		for(int q=2020-maxx;q<=min(2010,2020-minx+m);q++){
			f[i][q]=f[i-1][q]+f[i][q-1]-f[i-1][q-1];
			if(mp[i][q]) f[i][q]++;
//			printf("  %d %d %d\n",i-1010,q-1010,f[i][q]);
		}
	}
	int tt=0;
	for(int i=1010-n;i<=1010+n;i++){
		for(int q=1010-m;q<=1010+m;q++){
//			printf("%d %d %d\n",i-1010,q-1010,f[i][q]-f[i-n][q]-f[i][q-m]+f[i-n][q-m]);
			if(f[i][q]-f[i-n][q]-f[i][q-m]+f[i-n][q-m]==ans) tt++;
		}
	}
	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;
	scanf("%d",&T);
	while(T--) slove();
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 35852kb

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: -100
Wrong Answer
time: 64ms
memory: 35840kb

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
2
6
2
15
2
240
4
0
0
4
4
18
11
3
42
2
5
5
3
3
3
121
8
6
7
4
0
3
1
9
3
3
320
2
3
2
4
9
2
0
4
17
2
6
6
22
7
51
7
3
6
0
5
48
28
8
2
2
4
3
0
1
8
3
3
44
0
3
1
0
4
30
4
10
105
0
3
17
4
66
3
11
28
8
2
6
3
0
4
90
2
3
6
3
48
3
6
7
0
30
0
0
4
9
7
6
5
17
0
4
0
5
0
72
0
1
14
48
2
2
225
5
8
10
2
11
6
90
5...

result:

wrong answer 3rd numbers differ - expected: '20', found: '2'