QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#576366 | #5414. Stop, Yesterday Please No More | xinlengweishang | RE | 4ms | 16064kb | C++20 | 2.7kb | 2024-09-19 20:05:41 | 2024-09-19 20:05:41 |
Judging History
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...