zoukankan      html  css  js  c++  java
  • 【SCOI2009】最长距离

    题面

    https://www.luogu.org/problem/P4162

    题解

    // luogu-judger-enable-o2
    #include<cstdio>
    #include<iostream>
    #include<cstring>
    #include<algorithm>
    #include<cmath>
    #include<queue>
    #include<vector>
    #define ri register int
    #define N 33
    
    using namespace std;
    
    const int dx[]={1,-1,0,0},dy[]={0,0,-1,1};
    char g[N][N];
    int n,m,d;
    int dis[N][N];
    
    double dist(int x1,int y1,int x2,int y2){
      return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
    }
    
    struct node{
      int x,y;
      int s;
    };
    deque<node> q;
    
    int main(){
      scanf("%d %d %d",&n,&m,&d);
      memset(g,'#',sizeof(g));
      for (ri i=1;i<=n;i++) {
        scanf("%s",g[i]+1);
        g[i][m+1]='#';
      }
      double ans=0;
      
      for (ri ii=1;ii<=n;ii++) 
        for (ri jj=1;jj<=m;jj++) {
          memset(dis,0x3f,sizeof(dis));
          int cc;
          if (g[ii][jj]=='1') cc=1; else cc=0;dis[ii][jj]=cc;
          q.push_back((node){ii,jj,cc});
          while (!q.empty()) {
            node cur=q.front(); q.pop_front();
            for (ri i=0;i<4;i++) {
              int nx=cur.x+dx[i],ny=cur.y+dy[i];
              if (g[nx][ny]=='#') continue;
              int cost;
              if (g[nx][ny]=='1') cost=1; else cost=0;
              if (dis[cur.x][cur.y]+cost<dis[nx][ny]) {
                dis[nx][ny]=dis[cur.x][cur.y]+cost;
                if (!cost) q.push_front((node){nx,ny,dis[nx][ny]}); 
                else q.push_back((node){nx,ny,dis[nx][ny]});
              }
            }
          }
          for (ri i=1;i<=n;i++) 
            for (ri j=1;j<=m;j++) if (dis[i][j]<=d) {
              if (dist(ii,jj,i,j)>ans) {
                //cout<<ii<<" "<<jj<<" "<<i<<" "<<j<<endl;
                ans=dist(ii,jj,i,j);
              }
            }
        }
        //cout<<ans<<endl;
        printf("%.6lf",ans);
    }
  • 相关阅读:
    Judy alpha 第九天
    Judy alpha 第八天
    Judy alpha 第七天
    Judy alpha 第六天
    Judy alpha 第五天
    Judy alpha 第四天
    Fieldtrip 和 spm 文件读取
    matlab更改打开时候默认路径
    mne-python 安装大法
    Greenhouse-Geisser;统计结果报告;效应力大小介绍
  • 原文地址:https://www.cnblogs.com/shxnb666/p/11278472.html
Copyright © 2011-2022 走看看