QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#132444#5414. Stop, Yesterday Please No MoreyzhangAC ✓89ms37688kbC++143.0kb2023-07-29 22:37:182023-07-29 22:37:19

Judging History

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

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2023-07-29 22:37:19]
  • 评测
  • 测评结果:AC
  • 用时:89ms
  • 内存:37688kb
  • [2023-07-29 22:37:18]
  • 提交

answer

//μ's forever
#include <bits/stdc++.h>
#define N 1000005
//#define getchar nc
using namespace std;
inline char nc(){
    static char buf[100000],*p1=buf,*p2=buf;
    return p1==p2&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++;
}
inline int read()
{
    register int x=0,f=1;register char ch=getchar();
    while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
    while(ch>='0'&&ch<='9')x=(x<<3)+(x<<1)+ch-'0',ch=getchar();
    return x*f;
}
inline void write(register int x)
{
    if(!x)putchar('0');if(x<0)x=-x,putchar('-');
    static int sta[20];register int tot=0;
    while(x)sta[tot++]=x%10,x/=10;
    while(tot)putchar(sta[--tot]+48);
}
int T,n,m,k,l;
char s[N];
map<pair<int,int>,int> mp;
vector<int> v[N];
int posx,posy,lenx,leny;
void add(){
    v[posx][posy]++;
    v[posx][posy+leny]--;
    v[posx+lenx][posy]--;
    v[posx+lenx][posy+leny]++;
}
int main()
{
    scanf("%d",&T);
    while(T--){
        mp.clear();
        scanf("%d%d%d",&n,&m,&k);
        scanf("%s",s+1);
        l=strlen(s+1);
        // cerr<<l<<endl;
        int px=1,py=1,lx=1,ly=1,lex=n,ley=m;
        bool fl=0;
        for(int i=1;i<=l;++i){
            if(s[i]=='U'){
                --px;
                if(px==0) ++px,++lx,--lex;
            }else if(s[i]=='D'){
                ++px;
                if(px+lex-1>n) --lex;
            }else if(s[i]=='L'){
                --py;
                if(py==0) ++py,++ly,--ley;
            }else{
                ++py;
                if(py+ley-1>m) --ley;
            }
            if(lex==0||ley==0)
                fl=1;
        }
        if(fl){
            if(k==0) printf("%d\n",n*m);
            else puts("0");
            continue;
        }
        posx=lx,posy=ly,lenx=lex,leny=ley;
        // cerr<<posx<<" "<<posy<<" "<<lenx<<" "<<leny<<endl;
        for(int i=0;i<=n+1;++i){
            v[i].clear();
            v[i].resize(m+2);
        }
        add();
        mp[make_pair(posx,posy)]=1;
        for(int i=1;i<=l;++i){
            if(s[i]=='U'){
                --posx;
            }else if(s[i]=='D'){
                ++posx;
            }else if(s[i]=='L'){
                --posy;
            }else{
                ++posy;
            }
            if(!mp[make_pair(posx,posy)]){
                add();
                mp[make_pair(posx,posy)]=1;
            }
        }
        int nd=lenx*leny-k;
        for(int i=1;i<=n;++i)
            for(int j=1;j<=m;++j)
                v[i][j]+=v[i][j-1];
        for(int i=1;i<=n;++i)
            for(int j=1;j<=m;++j)
                v[i][j]+=v[i-1][j];
        // for(int i=1;i<=n;++i){
        //     for(int j=1;j<=m;++j){
        //         cerr<<v[i][j]<<" ";
        //     }
        //     cerr<<endl;
        // }
        int ans=0;
        for(int i=1;i<=n;++i)
            for(int j=1;j<=m;++j)
                if(v[i][j]==nd)
                    ++ans;
        printf("%d\n",ans);
    }
    return 0;
}

详细

Test #1:

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

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: 8ms
memory: 27224kb

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: 3ms
memory: 31312kb

input:

1
1000 1000 979065
DDUULULUDULLULLDLUULURRLDURLRDLRRUURUUUDLRLUUDUUDUDLLDDDULU

output:

958416

result:

ok 1 number(s): "958416"

Test #4:

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

input:

1
1000 1000 943471
LRLDLURLDLRDRDUULULRDDLLRURDUURLLDDLDLDDLLLUUURLDRUDRLLUUUUUDLUUDLURURRDLRLRRRLULRRULURLRRDLDRLUDRRLDDLUDRRLLUDLLLRDULRRRRLDUUDRDLULUUUUDRRDULUDLLUUDLDURDRRLRRLDRLDDRURURLUULRRLDLLRLRDRRUULDLDLULLDLLRULLRUULURDURRLUUDUULLULDLRUDDLRLRLLUDDDLLLUDRRLDDULRRURRDURDDRDLLULRLULURLRDLLURD...

output:

889224

result:

ok 1 number(s): "889224"

Test #5:

score: 0
Accepted
time: 89ms
memory: 37688kb

input:

1
1000 1000 315808
LLRURURRDDDULLDDUDRDLRLLLDDDLUDRDURLDULRLRULUUDLUULUUDULLLLDDURLDUULUUDLLDLLDRUDUULRLLRLRUURLRLULLDDLLDUDLLRUUDRLDLUULDLLDRRRURDULLDRRRDURURDRLDURURUDLURLDURRLRRUDUDURDRLRRRDLRRURLURUDRRLDLRULLDLUURDURLURLLRDLRDRUURURDRUDUUUDLRRLUDLUUDUDDRRDUULUUDDRLLULDUUDRURRDRLULRLULDURLURUDLLD...

output:

426

result:

ok 1 number(s): "426"

Test #6:

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

input:

1
1000 1000 986018
LLULDRRRDDURRUDRUURRRDDLUUDUULRULRDULLD

output:

972180

result:

ok 1 number(s): "972180"

Test #7:

score: 0
Accepted
time: 1ms
memory: 31180kb

input:

1
1000 1000 945431
DDRRURUUDLDULLDLDDLRULDLLDDRRLUDRLUURRLDRDLURUURRRRLRURLURULLLDRDDDRRRLDLDRLRDDUURRURDDDLRUURLUURLRDUDDDLLDUURLDLUDLLRRDUUDRLUULLUULDLURRUDLUURLRLRURDUDRRRDRLRUDLLLLURLULRLRLRRDDUDLRLDUUUULUDLLURRLURRDLRURRRULDDLLLRLRDLUDLLDDRULDUULRDDUUDDUDLURDULLDUDDLULRULDRLDDULDULLUDLULUDRURRR...

output:

893000

result:

ok 1 number(s): "893000"

Test #8:

score: 0
Accepted
time: 82ms
memory: 34804kb

input:

1
1000 1000 460035
RDDUURDULDDLDDLDDLDRRULLRLUURLURRRDRUDDDRDLDLDULUDLRLLRRLRRURRRDLRLUDRDURULDRRDDDDDDLRLDULUULDUDRLLUUUURUUDRURLRRULDRDRUUUUULULRURDDRLRULLLRDRRULUDDUDDLLLRDRUULUUDDRLURDLDURRDLRRLDRRUDLUULRDLURULLDLRLLDDURDUDLDULDLLRULRDLRLUULLUDRUDDDLRRDULULLRUURLUURRLLLLRLDRURLLRLDRRDDDRLUUUUDUL...

output:

417

result:

ok 1 number(s): "417"

Test #9:

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

input:

1
1000 1000 992010
LLLLLDLDRRLUDRR

output:

1999

result:

ok 1 number(s): "1999"

Test #10:

score: 0
Accepted
time: 1ms
memory: 31128kb

input:

1
1000 1000 919600
LLDLRUDRLURRUDRDRRDLRUDLRRRUUULDLDURDDDRUURRRLLURULDRLRLULLULDRULULRLRRRURLDDDRUUULUDLLLLRRLLRDDRDULUDLRLRLDRLUDUDURRULUULLDULUULDLLDRDULUDLDULDDUULDDRRURDRDULRRLDRRDUURURRLUUUDRRLDRRDDLULRDDLDLLRLRLLLRULUUUURRRLDLRUDRRLRURDRLDULLLUDRULLDLDRRUUDLRRLLRLDDLUDLRLRRURUUDUULUDURDURRLUU...

output:

944

result:

ok 1 number(s): "944"

Test #11:

score: 0
Accepted
time: 70ms
memory: 32340kb

input:

1
1000 1000 804351
DLRLDLLLLUDRDURRLDDRRLRUULURURDDDRDLRUDDULRRLLULURDRUUDRURRLURRRDRURRDRLULRDLRRDRRDDUDLUDLDULRUURRLRUUDRLDDRDDUUDULUULUUUDLRURULLRDUUDDDRRLDRUDDUUDRURLRDRUDLRLDDRRLLRLRDUDDULLULRLLDDUDDDUULDULLRRULULDUUULUDRRDRLUDLRRDDUDLRRDDLDLDRUULRRRRRLRLULLRDDRDDDULDRRURUDDLURLRLURLRDRULUDULUU...

output:

640000

result:

ok 1 number(s): "640000"