QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#376285#4567. Admissible MapInfinityNSTL 1691ms479804kbC++234.4kb2024-04-04 02:01:132024-04-04 02:01:14

Judging History

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

  • [2024-04-04 02:01:14]
  • 评测
  • 测评结果:TL
  • 用时:1691ms
  • 内存:479804kb
  • [2024-04-04 02:01:13]
  • 提交

answer

#include<bits/stdc++.h>
#define sz(x) (int)(x).size()
#define f first
#define s second
#define pb push_back
#define ll long long
#define all(x) (x).begin(),(x).end()
using namespace std;
// 19:33
const int N=20001;
bool moze[N][N];
int visited[N];
bool inc[N];
int nxt[N];
int need[N];
bool mid[N][N],up[N][N],down[N][N];
int dfs(int tr){
    if(nxt[tr]==-1){
        inc[tr]=0;
        visited[tr]=1;
        return -1;
    }
    if(visited[nxt[tr]]==1){
        inc[tr]=0;
        visited[tr]=1;
        return -1;
    }
    if(visited[nxt[tr]]==2){
        inc[tr]=1;
        visited[tr]=1;
        return nxt[tr];
    }
    visited[tr]=2;
    int r=dfs(nxt[tr]);
    visited[tr]=1;
    if(r==-1){
        inc[tr]=0;
        return -1;
    }
    else{
        inc[tr]=1;
        if(tr==r)return -1;
        return r;
    }
}
int main(){
    string s;
    cin >> s;
    int n=sz(s);
    for(int i=0;i<n;i++){
        for(int j=i;j<n;j++){
            mid[i][j]=s[i]!='L'&&s[j]!='R';
            up[i][j]=s[j]!='U';
            down[i][j]=s[j]!='D';
            if(i!=j){
                up[i][j]=up[i][j]&&up[i][j-1];
                down[i][j]=down[i][j]&&down[i][j-1];
            }
        }
    }
    vector<pair<int,int>> its;
    for(int len=1;len<=n;len++){
        for(int i=0;i<n;i++){
            inc[i]=0;
            visited[i]=0;
            if(s[i]=='L'){
                nxt[i]=i-1;
            }
            if(s[i]=='R'){
                nxt[i]=i==n-1?-1:i+1;
            }
            if(s[i]=='U'){
                nxt[i]=i<len?-1:i-len;
            }
            if(s[i]=='D'){
                nxt[i]=i>=n-len?-1:i+len;
            }
            need[i]=0;
        }
        for(int i=0;i<n;i++){
            if(!visited[i]){
                dfs(i);
            }
            if(nxt[i]==-1||!inc[i]){
                need[i]=-1;
            }
            if(need[i]==-1)continue;
            if(nxt[i]>i){
                need[i]=max(need[i],nxt[i]);
            }
            else{
                need[nxt[i]]=max(need[nxt[i]],i);
            }
        }
        its.clear();
        int r=0;
        int lst=0;
        for(int i=0;i<n;i++){
            if(need[i]==-1){
                lst=i+1;
                r=i+1;
                continue;
            }
            r=max(r,need[i]);
            if(r==i){
                its.pb({lst,r});
                lst=i+1;
                r=i+1;
            }
        }
        for(int i=0;i<sz(its);i++){
            int tr=its[i].f;
            bool ok=up[tr][tr+len-1]&&mid[tr][tr+len-1];
            tr+=len;
            for(int j=i;ok&&j<sz(its);j++){
                int en=its[j].s;
                while(tr+len-1<=en){
                    if(!mid[tr][tr+len-1]){
                        ok=0;
                        break;
                    }
                    tr+=len;
                }
                if(!ok)break;
                if(en+1==tr&&down[tr-len][tr-1]){
                    moze[its[i].f][its[j].s]=1;
                }
                if(j==sz(its)-1)continue;
                if(its[j+1].f!=its[j].s+1)break;
            }
        }
        /*printf("%i:\n",len);
        for(auto p:its){
            printf("%i - %i\n",p.f,p.s);
        }*/
    }
    int ans=0;
    for(int i=0;i<n;i++)for(int j=i;j<n;j++)ans+=moze[i][j];
    printf("%i\n",ans);
}

/*
bool mid[N][N],up[N][N],down[N][N];
bool moze[N];
int main(){
    string s;
    cin >> s;
    int n=sz(s);
    for(int i=0;i<n;i++){
        for(int j=i;j<n;j++){
            mid[i][j]=s[i]!='L'&&s[j]!='R';
            up[i][j]=s[j]!='U';
            down[i][j]=s[j]!='D';
            if(i!=j){
                up[i][j]=up[i][j]&&up[i][j-1];
                down[i][j]=down[i][j]&&down[i][j-1];
            }
        }
    }
    int ans=0;
    for(int i=0;i<n;i++){
        for(int j=0;j<i;j++)moze[j]=0;
        for(int len=0;len<=i;len++){
            if(mid[i-len][i]&&down[i-len][i]){
                int tr=i;
                while(tr-len>=0){
                    if(!mid[tr-len][tr])break;
                    if(up[tr-len][tr]&&!moze[tr-len]){
                        moze[tr-len]=1;
                        ans++;
                        printf("%i %i\n",tr-len,i);
                    }
                    tr=tr-len-1;
                }
            }
        }
    }
    */

Details

Tip: Click on the bar to expand more detailed information

Test #1:

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

input:

RDUL

output:

2

result:

ok 1 number(s): "2"

Test #2:

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

input:

RDRU

output:

0

result:

ok 1 number(s): "0"

Test #3:

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

input:

RLRLRL

output:

6

result:

ok 1 number(s): "6"

Test #4:

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

input:

D

output:

0

result:

ok 1 number(s): "0"

Test #5:

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

input:

DL

output:

0

result:

ok 1 number(s): "0"

Test #6:

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

input:

RL

output:

1

result:

ok 1 number(s): "1"

Test #7:

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

input:

DU

output:

1

result:

ok 1 number(s): "1"

Test #8:

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

input:

RDULU

output:

2

result:

ok 1 number(s): "2"

Test #9:

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

input:

RDDUULRDDD

output:

2

result:

ok 1 number(s): "2"

Test #10:

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

input:

RLRLRLRLRL

output:

15

result:

ok 1 number(s): "15"

Test #11:

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

input:

DUDUDUDUDU

output:

15

result:

ok 1 number(s): "15"

Test #12:

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

input:

RDRDULULRR

output:

3

result:

ok 1 number(s): "3"

Test #13:

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

input:

UUURDRDRDLRULLRLULUDRURDRULLRU

output:

2

result:

ok 1 number(s): "2"

Test #14:

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

input:

RLRLRLRLRLRLRLRLRLRLRLRLRLRLRL

output:

120

result:

ok 1 number(s): "120"

Test #15:

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

input:

DUDUDUDUDUDUDUDUDUDUDUDUDUDUDU

output:

120

result:

ok 1 number(s): "120"

Test #16:

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

input:

RDRDRDRDRDRDRDULULULULULULULDL

output:

8

result:

ok 1 number(s): "8"

Test #17:

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

input:

DLURRURRLDDUUDRDURDDLRLULLULDUULDDRDUURLLDDLRRLUDURLLRRRLLRLUDULDULUUDLLDLRLULDDURDDDLLUURRDRRDDRULU

output:

18

result:

ok 1 number(s): "18"

Test #18:

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

input:

RLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRL

output:

1275

result:

ok 1 number(s): "1275"

Test #19:

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

input:

DUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDU

output:

1275

result:

ok 1 number(s): "1275"

Test #20:

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

input:

RDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDULULULULULULULULULULULULULULULULULULULULULULULULUL

output:

26

result:

ok 1 number(s): "26"

Test #21:

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

input:

LRULLRUURRDUULDRULLLRLUDLDRUUURRDDRDLLDDRLUDLRLRRLRRUDUUULDDLUDUDRURUDLLRLDRLLDULRRURLDLDDDLUUUDRRUDRDURRRDLLDRDRRDULULRLLULULDLDLUURRRLRRUUUUDUUUULLURLUUDLURDUDDUDDURDDURRRLURDLUDDDDLRLDULRRRULLDDDDLLLDDLUDURDURLDDUDDRDLLULRRUDRRDRRRLUUULRLDDDDDDURRDULUDDDLDLLUDDUUDDDLLRDDRLRRLRDLDUDUDRULURRRULRLRD

output:

43

result:

ok 1 number(s): "43"

Test #22:

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

input:

RLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRL

output:

11325

result:

ok 1 number(s): "11325"

Test #23:

score: 0
Accepted
time: 6ms
memory: 34776kb

input:

DUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDU

output:

11325

result:

ok 1 number(s): "11325"

Test #24:

score: 0
Accepted
time: 5ms
memory: 30612kb

input:

RDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDULULULULULULULULULULULULULULULULULULULULULULULULULULULULULULULULULULULULULULULULULULULULULULULULULULULULULULULULULULULULULULULULULULULULULULULULULULUL

output:

76

result:

ok 1 number(s): "76"

Test #25:

score: 0
Accepted
time: 18ms
memory: 88060kb

input:

LRRDDUUDLRLDLLRRDRLRDRLUDURURLLDURDLUDDRDLRLUULRLLDLRRRLDRRULRRULURRUDURRDLULLLDDRURLLURURLRRRRLURLURUUDRURDLLRUDDLULDLLRULRURDLRDUULURDULLLRLRDLRRUDUUUDUDLLRULRRRDRLLRRURRRRRLRDULDURRDLDULLURLLLURLRLDDRURULLDULULDRLDRLUUDDULLDRRDRURURDUUDDRDULRRUUDULULDDLRDURUUUURULLURRUDRURLUDLLUURRULRURDDRDRLUDUU...

output:

168

result:

ok 1 number(s): "168"

Test #26:

score: 0
Accepted
time: 66ms
memory: 87992kb

input:

RLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRL...

output:

125250

result:

ok 1 number(s): "125250"

Test #27:

score: 0
Accepted
time: 11ms
memory: 87976kb

input:

DUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDU...

output:

125250

result:

ok 1 number(s): "125250"

Test #28:

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

input:

RDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRD...

output:

251

result:

ok 1 number(s): "251"

Test #29:

score: 0
Accepted
time: 135ms
memory: 243648kb

input:

RDLRLLLLDDLDUUURUDUDUDUURURLRURLURLRLUULLRUDUURLDDRRDRUULDUURUDUUDLRLDUUUDRLLDRRDLLULDULRDURLLRLUDDRRLUDURRUUDULDLDLLDDUDURDLULRLLDRDRURUDLRDUDULLDUDDLRRRUDLLLRDLLRDDLDRDLRUUUUDRRDLDUUURDUUDUDDURUDRLDRRUURDUDDRRDDDULDRURDUURDUUDDRRDLRURRDUUDLDLRDULLLDDRLDRRLURLUUDRDDUDLDULDLRDDUUURRURURDUUDULULDDDRL...

output:

491

result:

ok 1 number(s): "491"

Test #30:

score: 0
Accepted
time: 1691ms
memory: 243876kb

input:

RLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRL...

output:

1125750

result:

ok 1 number(s): "1125750"

Test #31:

score: 0
Accepted
time: 59ms
memory: 243636kb

input:

DUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDU...

output:

1125750

result:

ok 1 number(s): "1125750"

Test #32:

score: 0
Accepted
time: 59ms
memory: 215568kb

input:

RDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRDRD...

output:

751

result:

ok 1 number(s): "751"

Test #33:

score: 0
Accepted
time: 614ms
memory: 479804kb

input:

LULDRUDLRRRRDRLRUUURDUUDLLUURDLRDRDDDURLUUDLRLRLUDRURDRRUDLRRLRURDDURURDRLULUULRDDLDLDLRLLLRLRRRLUDDLUDLDLURLUUDDDLLDUDLDRUULRLRUUDRDUUDLDLLDDLRUULRLUUDRRDLLLDLDUULLDDDLDRRRDDDDUUUULLLULRLLLLLDDDLLRDLDULDDDLRULRRDUULRLULRRDULDUULDURLRLDDLLLLRLLULDLRLDRRDLRULDRDDLDLUUUULUUDUDRDULUDRUDLUULRLRULULLUDRU...

output:

936

result:

ok 1 number(s): "936"

Test #34:

score: -100
Time Limit Exceeded

input:

RLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRL...

output:


result: