1 条题解
-
2
這道題我們發現這個 的限制實際上就是每個點周圍可以走 步
並且在 的位置是可以不用花錢就可以走的
那我們就可以考慮0-1bfs進行統計其他所有點對於每一個點的距離,然後只要步數小於 即可
#include<iostream> #include<iomanip> #include<cstring> #include<cstdio> #include<queue> #include<cmath> #define N 35 using namespace std; bool Test_MLE_start; int _=1,n,m,k,dx[5]={0,1,0,-1},dy[5]={1,0,-1,0},a[N][N],dis[N][N][N][N];bool vis[N][N]; struct node{int x,y;}; deque<node> q; inline int reads(){ char c=getchar(); int sum=0,f=1; while(!isdigit(c)){ if(c=='-') f=-1; c=getchar(); } while(isdigit(c)){ sum=(sum<<3)+(sum<<1)+(c^'0'); c=getchar(); } return sum*f; } inline void files(){ freopen("A.in","r",stdin); // freopen("std.out","w",stdout); } inline void clr(){ // Don't forget! } void bfs01(int sx,int sy){ memset(vis,0,sizeof(vis)); q.push_back(node{sx,sy});dis[sx][sy][sx][sy]=a[sx][sy]; while(!q.empty()){ int idx=q.front().x,idy=q.front().y;q.pop_front(); if(vis[idx][idy]) continue;vis[idx][idy]=1; for(int i=0;i<4;i++){ int x=idx+dx[i],y=idy+dy[i]; if(x<1||x>n||y<1||y>m) continue; if(dis[sx][sy][x][y]>dis[sx][sy][idx][idy]+a[x][y]){ dis[sx][sy][x][y]=dis[sx][sy][idx][idy]+a[x][y]; if(!a[x][y]) q.push_front(node{x,y}); else q.push_back(node{x,y}); } } } } bool Test_MLE_end; signed main(){ // printf("%lf Mb\n",(&Test_MLE_end-&Test_MLE_start-1)/1024.0/1024.0); // files(); // _=reads(); while(_--){ clr();n=reads(),m=reads(),k=reads();memset(dis,0x3f,sizeof(dis)); for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ char c;cin>>c; a[i][j]=c-'0'; } } for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ bfs01(i,j); } }double ans=0; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ for(int x=1;x<=n;x++){ for(int y=1;y<=m;y++){ // cout<<i<<","<<j<<"->"<<x<<","<<y<<":"<<dis[i][j][x][y]<<"\n"; if(dis[i][j][x][y]>k) continue; ans=max(ans,sqrt((i-x)*(i-x)+(j-y)*(j-y))); // if(i==1&&j==5&&x==2&&y==5) cout<<ans<<"\n"; // if((i-x)*(i-x)+(j-y)*(j-y)==20) cout<<"!"<<i<<" "<<j<<" "<<x<<" "<<y<<" "<<ans<<"\n"; } } } }cout<<fixed<<setprecision(6)<<ans<<"\n"; } return 0; }
- 1
信息
- ID
- 368
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 5
- 标签
- (无)
- 递交数
- 30
- 已通过
- 14
- 上传者