QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#177729#6739. Teleportucup-team870AC ✓320ms218568kbC++171.6kb2023-09-13 11:39:292023-09-13 11:39:30

Judging History

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

  • [2023-09-13 11:39:30]
  • 评测
  • 测评结果:AC
  • 用时:320ms
  • 内存:218568kb
  • [2023-09-13 11:39:29]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
#define IOS {cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);}
#define rep(i,j,k) for(int i=j;i<=k;++i)
#define Rep(i,j,k) for(int i=j;i<k;++i)
#define per(i,j,k) for(int i=j;i>=k;--i)
#define P pair<int,int>
#define ll long long
#define vi vector<int>
const int N=5005;
const P dir[4]={{-1,0},{1,0},{0,1},{0,-1}};
int n,k;
int fa[N*2][N],dis[N][N];
P q[N*N]; int L=1,R=0;
char s[N][N];
bool ok(int x,int y){
    return 1<=x && x<=n && 1<=y && y<=n;
}
int fd(int fa[],int x){
    if(!fa[x])return x;
    return fa[x]=fd(fa,fa[x]);
}
void line(int x,int y,int cnt,int val){
    // cout<<x<<' '<<y<<' '<<cnt<<'h'<<'\n';
    int ux=x+cnt;
    while(x<ux && ok(x,y)){
        int d=x-y+N,nx=fd(fa[d],x);
        y+=nx-x; x=nx;
        if(x>=ux || !ok(x,y))break;
        if(dis[x][y]==-1 && s[x][y]=='.')dis[x][y]=val,q[++R]={x,y};
        fa[d][x]=x+1;
        ++x,++y;
    }
}
signed main(){
    IOS
    cin>>n>>k;
    rep(i,1,n)cin>>s[i]+1;
    // rep(i,1,n){
    //     rep(j,1,n)fa[i-j+N][i]=i;
    // }
    memset(dis,-1,sizeof dis); dis[1][1]=0;
    q[++R]={1,1};
    while(L<=R){
        auto [x,y]=q[L++]; int nd=dis[x][y]+1;
        // cout<<x<<' '<<y<<'\n';
        if(x==n && y==n){
            cout<<dis[x][y];return 0;
        }
        rep(i,0,3){
            int xx=x+dir[i].first,yy=y+dir[i].second;
            if(!ok(xx,yy) || dis[xx][yy]!=-1 || s[xx][yy]!='.')continue;
            dis[xx][yy]=nd; q[++R]={xx,yy};
        }
        line(x+1,y+1,k/2,nd);
        line(y+1,x,(k+1)/2,nd);
    }
    cout<<-1;
}
/*
3 2
.*.
.*.
...

*/

详细

Test #1:

score: 100
Accepted
time: 8ms
memory: 102168kb

input:

3 2
.*.
.*.
...

output:

3

result:

ok 1 number(s): "3"

Test #2:

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

input:

3 3
.*.
.*.
...

output:

2

result:

ok 1 number(s): "2"

Test #3:

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

input:

961 4
...*.*..*.....*.*..*..*..*.*.*.*.....*.....*....*..*...*....*.........*....*....*...*......*..*..*...*..*...*.....*...*...*.*.*.........**..**.......*.......*...*...*.*.*........*....*..*..*...*.....*.*......**.**..**...*..*.**.....*....*.*.*..*..*..*.*..*.*..*......*..*..*.*......*...*.*...*....

output:

540

result:

ok 1 number(s): "540"

Test #4:

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

input:

975 434
.*......*...*....*......*..*...*...**....*....*.......*...*.....*..*..*.*.*..*.*..*..*.*....*.*.*..*...*.*.....*......*.*...*......*..*..*......**..**.......*...*.*..*..*.*.**....*.*.*.....*....**.*..*..**.*..*.....*.*......*..*...*..*...*....**...*....*..*.*.*...........*..*.**.*.*..*.*..**...

output:

5

result:

ok 1 number(s): "5"

Test #5:

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

input:

966 19
..*.*.*........*.*..*.**..*....*..*..*....*.**..*.*.*..*.*.*..**....*.*.*....*.....*...........*.*..*.....*..*...*....*.*...*.*...*....*...*...*.*.*....*.*....**.*.......*....*.*.*...*..*..*..*.*...*...*...*..*..*..........*.*....*.*......*...*..**....*.*....**.....*..*..*..*.*....*...*..*.*....

output:

104

result:

ok 1 number(s): "104"

Test #6:

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

input:

973 199
..**.*...*.*...*.*.*.*.**..*.*.*..*......*.....*.*.*..*...**.....*.*..*.*..*...*....*..*...*....*.*...*.*......*..*.*.*.*......**......*.*.*.*.*.*...*...*...*....*......*.*.*.*..*..*..*...*..*.*....*....*.*...*..*..*.*..**.**..*.**....*.*...*..**..**...*......*.....*.....*..*.*.......*.*.*.....

output:

10

result:

ok 1 number(s): "10"

Test #7:

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

input:

984 95
.....*.*...*....*..*....*.*....**.**......*....*.*.*.......*.....*.*..*....*..*....*.*.....*..*.......*.*......*.*....*.....*......*...*....*....*......*....*.*...*........*......*.*....*.*...*....*..**....*.*.*.**....*..*.*..*..*.*......*..*......*.*......*...*......*.......*...*....*...**.....

output:

21

result:

ok 1 number(s): "21"

Test #8:

score: 0
Accepted
time: 320ms
memory: 218568kb

input:

2996 2
..*..*.....*..*.....*....**..*...........*..*........*..*..*.*..*..*.*.*.**.*.....**.*.......*.......*..*....*.....*..*.*.*....**.....*..**.....*.....*.......*.*.*.*....*...*..*.**......**..*.*...**..*..*......*..*.*...*......*.*.*.*...**.**..*.*........*.*..*...**......*.*..*.*..*....*.*.*.*...

output:

3354

result:

ok 1 number(s): "3354"

Test #9:

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

input:

2905 1023
.........*..*.**.....*...*.*....*.*.**.*..*...*..*....*...*.**.*.*.**..*......*...*.**..*...*..*.........*.........*.*.....**.*.*........*.....*.*....*..*.*.....*..*..*..*.*..*....**...*.*..*....*......*.........*.*.*.*......**.**.**..*.*.*..*..**..*..*...*...*.*.......*..*..*....*.*.........

output:

6

result:

ok 1 number(s): "6"

Test #10:

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

input:

2978 104
.*.........*...**.....*...*........*..*...*.*.*.....*........*.*...*.....*...*....*...*..*...*..*..*....*...*..*.*....*....*...*.......*.*.....*.*.......*.*..*...*.*.......*.*.*..........*.*..*.*..**.*....*.*.*..*...*.*.*.....*....*...*.*.*.*.........*.*.....**.*.*..*.*....*........*...*.**...

output:

58

result:

ok 1 number(s): "58"