• bzoj 1295: [SCOI2009]最长距离


     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cmath>
     4 #include<cstring>
     5 using namespace std;
     6 int n,m,T;
     7 double ans=0;
     8 bool mp[31][31],inq[31][31],vis[31][31];
     9 int dis[31][31];
    10 int dx[4]={1,-1,0,0};
    11 int dy[4]={0,0,-1,1};
    12 struct data{
    13 int x,y;
    14 }q[100000];
    15 void getans(int x,int y)
    16 {
    17     for(int i=x;i<=n;i++)
    18        for(int j=1;j<=m;j++)
    19           if(dis[i][j]<=T&&(y-j)*(y-j)+(x-i)*(x-i)>ans)
    20              ans=(y-j)*(y-j)+(x-i)*(x-i);
    21 }
    22 void search(int xx,int yy)
    23 {
    24     int nowx,nowy,i,t=1,w=1,nx,ny;
    25     q[1].x=xx;q[1].y=yy;
    26     memset(inq,0,sizeof(inq));
    27     memset(dis,127,sizeof(dis));
    28     inq[xx][yy]=1;dis[xx][yy]=mp[xx][yy];
    29     while(t<=w)
    30     {
    31         nowx=q[t].x;nowy=q[t].y;
    32         t++;
    33         for(i=0;i<4;i++)
    34         {
    35             nx=nowx+dx[i];ny=nowy+dy[i];
    36             if(nx>n||nx<xx||ny>m||ny<1)continue;
    37             if(dis[nowx][nowy]+mp[nx][ny]<dis[nx][ny])
    38             {
    39                  dis[nx][ny]=dis[nowx][nowy]+mp[nx][ny];
    40                  if(!inq[nx][ny])   
    41                  {
    42                     q[++w].x=nx;q[w].y=ny;inq[nx][ny]=1;
    43                  }      
    44             }
    45         }
    46         inq[nowx][nowy]=0;
    47     }
    48     getans(xx,yy);
    49 }
    50 int main()
    51 {
    52     scanf("%d%d%d",&n,&m,&T);
    53     char str[40];
    54     for(int i=1;i<=n;i++)
    55     {
    56         scanf("%s",str);
    57         for(int j=0;j<m;j++)
    58         mp[i][j+1]=str[j]-'0';
    59     }
    60     for(int i=1;i<=n;i++)
    61        for(int j=1;j<=m;j++)
    62           {search(i,j);}
    63     printf("%.6lf",sqrt(ans));
    64     return 0;
    65 }

    以每一个点为中心进行宽搜,存到每个点移去的最小障碍数,然后枚举更新最优值。

  • 相关阅读:
    关于unsigned char的取反操作
    Windows10 添加永久路由
    mysql入门-触发器
    mysql入门-视图
    Mysql入门-索引
    Mysql入门-表操作
    mysql数据类型选取
    MQ-基本操作
    关于Hadoop集群的配置方法——另附安装网址
    关于——This is probably not a problem with npm. There is likely additional logging output above.——的解决方法
  • 原文地址:https://www.cnblogs.com/xydddd/p/5248874.html
Copyright © 2020-2023  润新知