zoukankan      html  css  js  c++  java
  • bzoj 1295

    思路:我们可以暴力得出已a[i][j]为起点到其他点所去掉的障碍物。那么可以得出该点到能到的点的最大距离,最后再取一个max

    #include<bits/stdc++.h>
    using namespace std;

    int n,m,t;
    double ans=0;
    int dx[4]={-1,1,0,0};
    int dy[4]={0,0,-1,1};
    int mp[31][31],dis[31][31];
    int vis[40][40];

    struct node{
        int x,y;
        node(int xx,int yy){
            x=xx;y=yy;
        }
    };

    bool check(int x,int y){
        if(x<1||y<1||x>n||y>m) return true;
        return false;
    }

    void getans(int x,int y)
    {
        for(int i=1;i<=n;i++)
           for(int j=1;j<=m;j++)
              if(dis[i][j]<=t&&sqrt((y-j)*(y-j)+(x-i)*(x-i))>ans)
                 ans=sqrt((y-j)*(y-j)+(x-i)*(x-i));
    }

    void hh(int x,int y){
        memset(vis,0,sizeof(vis));
        memset(dis,127,sizeof(dis));
        queue<node > p;
        dis[x][y]=mp[x][y];
        p.push(node(x,y));
        while(!p.empty()){
            node xy=p.front();p.pop();
            int xxx=xy.x,yyy=xy.y; vis[x][y]=1;
            for(int i=0;i<4;i++){
                int x1=xxx+dx[i];
                int y1=yyy+dy[i];
                if(vis[x1][y1]||check(x1,y1)) continue;
                if(!mp[x1][y1]&&dis[x1][y1]>dis[xxx][yyy]){
                         dis[x1][y1]=dis[xxx][yyy];
                       p.push(node(x1,y1));
                }
                else if(mp[x1][y1]&&dis[x1][y1]>dis[xxx][yyy]+1){
                    dis[x1][y1]=dis[xxx][yyy]+1;
                         p.push(node(x1,y1));
                }
            }
        }
        getans(x,y);
    }

    int main(){
        scanf("%d%d%d",&n,&m,&t);
        string str;
        memset(mp,0,sizeof(mp));
        for(int i=1;i<=n;i++){
            cin>>str;
            for(int j=0;j<m;j++){
                mp[i][j+1]=str[j]-'0';
            }
        }
        for(int i=1;i<=n;i++)
            for(int j=1;j<=m;j++)
            hh(i,j);
        printf("%.6lf ",ans);
        return 0;
    }
  • 相关阅读:
    OpenGL模板 Mac Cmake OpenGL(Glut) Template
    CodeForces 277A Learning Languages (并检查集合)
    Linux netstat订购具体解释
    POJ 1936 All in All
    他的第一个NDK的Demo
    [ACM] POJ 2418 Hardwood Species (Trie树或map)
    Swift
    Swift
    Swift
    Swift
  • 原文地址:https://www.cnblogs.com/hhxj/p/7002828.html
Copyright © 2011-2022 走看看