QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#693326#5414. Stop, Yesterday Please No MorelselegiesAC ✓28ms36588kbC++142.0kb2024-10-31 15:58:192024-10-31 15:58:41

Judging History

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

  • [2024-10-31 15:58:41]
  • 评测
  • 测评结果:AC
  • 用时:28ms
  • 内存:36588kb
  • [2024-10-31 15:58:19]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
const int N=2e3+5,M=1e6+5;
int dis[N][N],pre[N][N],a[M],base[N][N];
int sum;
signed main()
{
	int t;
	cin>>t;
	while(t--)
	{
		int n,m,K;
		cin>>n>>m>>K;
		for (int i=1;i<=n;i++)
			for (int j=1;j<=m;j++)
			{
				pre[i][j]=0;
				dis[i][j]=0;
				base[i][j]=0;
			}
		string s;
		cin>>s;
		
		int len=s.size();
		s=" "+s;
		for (int i=1;i<=len;i++)
			a[i]=0;
		
		int lr=0,ud=0,ll=0,rr=0,uu=0,dd=0;
		for (int i=1;i<=len;i++)
		{
			if (s[i]=='U') 
			{
				a[i]=1;
				ud++;
				uu=max(uu,ud);
			}
			else if (s[i]=='D') 
			{
				a[i]=2;
				ud--;
				dd=min(dd,ud);
			}
			else if (s[i]=='L') 
			{
				a[i]=3;
				lr--;
				ll=min(ll,lr);
			}
			else 
			{
				a[i]=4;
				lr++;
				rr=max(rr,lr);
			}	
		} 
		sum=0;
		//cout<<uu<<' '<<dd<<' '<<ll<<' '<<rr<<endl;
		for (int i=1+uu;i<=n+dd;i++)
			for (int j=1-ll;j<=m-rr;j++)		
				sum++;
		//sum=(n+dd-uu) *(m-rr+ll);
		//cout<<sum<<endl;
		if (K==0 && sum==0)
		{
			cout<<n*m<<endl;
			continue;
		}	
		else if (sum<K) 
		{
			cout<<0<<endl;	
			continue;
		}	
		int x=1+uu,y=1-ll;
		base[x][y]=1;
		for(int i=1;i<=len;i++)
		{
			
			if (a[i]==1) x--;
			if (a[i]==2) x++;
			if (a[i]==3) y--;
			if (a[i]==4) y++;
			if (base[x][y]) continue;	
			base[x][y]=1; 
		} 
		int xx=n+dd-uu,yy=m-rr+ll;	
		for (int k=1;k<=n;k++)
			for (int l=1;l<=m;l++)
			{
				if (base[k][l]) 
				{
					dis[k][l]++;
					dis[k+xx][l]--;
					dis[k][l+yy]--;
					dis[k+xx][l+yy]++;
				}
			}
//		for (int i=1;i<=n;i++)
//		{
//			for (int j=1;j<=m;j++)
//				cout<<dis[i][j]<<' ';
//			cout<<endl;
//		}
		
			
		for (int i=1;i<=n;i++)
			for (int j=1;j<=m;j++)
			pre[i][j]=pre[i-1][j]+pre[i][j-1]-pre[i-1][j-1]+dis[i][j];
//		for (int i=1;i<=n;i++)
//		{
//			for (int j=1;j<=m;j++)
//				cout<<pre[i][j]<<' ';
//			cout<<endl;
//		}	
		int res=0;
		for (int i=1;i<=n;i++)
			for (int j=1;j<=m;j++)
			if(sum-pre[i][j]==K) res++;
		cout<<res<<endl;
	}
 } 

Details

Tip: Click on the bar to expand more detailed information

Test #1:

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

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: 0ms
memory: 12252kb

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: 34384kb

input:

1
1000 1000 979065
DDUULULUDULLULLDLUULURRLDURLRDLRRUURUUUDLRLUUDUUDUDLLDDDULU

output:

958416

result:

ok 1 number(s): "958416"

Test #4:

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

input:

1
1000 1000 943471
LRLDLURLDLRDRDUULULRDDLLRURDUURLLDDLDLDDLLLUUURLDRUDRLLUUUUUDLUUDLURURRDLRLRRRLULRRULURLRRDLDRLUDRRLDDLUDRRLLUDLLLRDULRRRRLDUUDRDLULUUUUDRRDULUDLLUUDLDURDRRLRRLDRLDDRURURLUULRRLDLLRLRDRRUULDLDLULLDLLRULLRUULURDURRLUUDUULLULDLRUDDLRLRLLUDDDLLLUDRRLDDULRRURRDURDDRDLLULRLULURLRDLLURD...

output:

889224

result:

ok 1 number(s): "889224"

Test #5:

score: 0
Accepted
time: 28ms
memory: 36588kb

input:

1
1000 1000 315808
LLRURURRDDDULLDDUDRDLRLLLDDDLUDRDURLDULRLRULUUDLUULUUDULLLLDDURLDUULUUDLLDLLDRUDUULRLLRLRUURLRLULLDDLLDUDLLRUUDRLDLUULDLLDRRRURDULLDRRRDURURDRLDURURUDLURLDURRLRRUDUDURDRLRRRDLRRURLURUDRRLDLRULLDLUURDURLURLLRDLRDRUURURDRUDUUUDLRRLUDLUUDUDDRRDUULUUDDRLLULDUUDRURRDRLULRLULDURLURUDLLD...

output:

426

result:

ok 1 number(s): "426"

Test #6:

score: 0
Accepted
time: 0ms
memory: 35088kb

input:

1
1000 1000 986018
LLULDRRRDDURRUDRUURRRDDLUUDUULRULRDULLD

output:

972180

result:

ok 1 number(s): "972180"

Test #7:

score: 0
Accepted
time: 8ms
memory: 33204kb

input:

1
1000 1000 945431
DDRRURUUDLDULLDLDDLRULDLLDDRRLUDRLUURRLDRDLURUURRRRLRURLURULLLDRDDDRRRLDLDRLRDDUURRURDDDLRUURLUURLRDUDDDLLDUURLDLUDLLRRDUUDRLUULLUULDLURRUDLUURLRLRURDUDRRRDRLRUDLLLLURLULRLRLRRDDUDLRLDUUUULUDLLURRLURRDLRURRRULDDLLLRLRDLUDLLDDRULDUULRDDUUDDUDLURDULLDUDDLULRULDRLDDULDULLUDLULUDRURRR...

output:

893000

result:

ok 1 number(s): "893000"

Test #8:

score: 0
Accepted
time: 20ms
memory: 35340kb

input:

1
1000 1000 460035
RDDUURDULDDLDDLDDLDRRULLRLUURLURRRDRUDDDRDLDLDULUDLRLLRRLRRURRRDLRLUDRDURULDRRDDDDDDLRLDULUULDUDRLLUUUURUUDRURLRRULDRDRUUUUULULRURDDRLRULLLRDRRULUDDUDDLLLRDRUULUUDDRLURDLDURRDLRRLDRRUDLUULRDLURULLDLRLLDDURDUDLDULDLLRULRDLRLUULLUDRUDDDLRRDULULLRUURLUURRLLLLRLDRURLLRLDRRDDDRLUUUUDUL...

output:

417

result:

ok 1 number(s): "417"

Test #9:

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

input:

1
1000 1000 992010
LLLLLDLDRRLUDRR

output:

1999

result:

ok 1 number(s): "1999"

Test #10:

score: 0
Accepted
time: 2ms
memory: 35704kb

input:

1
1000 1000 919600
LLDLRUDRLURRUDRDRRDLRUDLRRRUUULDLDURDDDRUURRRLLURULDRLRLULLULDRULULRLRRRURLDDDRUUULUDLLLLRRLLRDDRDULUDLRLRLDRLUDUDURRULUULLDULUULDLLDRDULUDLDULDDUULDDRRURDRDULRRLDRRDUURURRLUUUDRRLDRRDDLULRDDLDLLRLRLLLRULUUUURRRLDLRUDRRLRURDRLDULLLUDRULLDLDRRUUDLRRLLRLDDLUDLRLRRURUUDUULUDURDURRLUU...

output:

944

result:

ok 1 number(s): "944"

Test #11:

score: 0
Accepted
time: 24ms
memory: 35516kb

input:

1
1000 1000 804351
DLRLDLLLLUDRDURRLDDRRLRUULURURDDDRDLRUDDULRRLLULURDRUUDRURRLURRRDRURRDRLULRDLRRDRRDDUDLUDLDULRUURRLRUUDRLDDRDDUUDULUULUUUDLRURULLRDUUDDDRRLDRUDDUUDRURLRDRUDLRLDDRRLLRLRDUDDULLULRLLDDUDDDUULDULLRRULULDUUULUDRRDRLUDLRRDDUDLRRDDLDLDRUULRRRRRLRLULLRDDRDDDULDRRURUDDLURLRLURLRDRULUDULUU...

output:

640000

result:

ok 1 number(s): "640000"