• LOJ P10015 扩散 题解


    每日一题 day49 打卡

    Analysis

    用dis数组记录每两个点之间的时间,再用一个传递闭包来维护最小的时间就好了

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 #include<cmath>
     6 #define int long long
     7 #define maxn 50+10
     8 #define rep(i,s,e) for(register int i=s;i<=e;++i)
     9 #define dwn(i,s,e) for(register int i=s;i>=e;--i)
    10 using namespace std;
    11 inline int read()
    12 {
    13     int x=0,f=1;
    14     char c=getchar();
    15     while(c<'0'||c>'9') {if(c=='-') f=-1; c=getchar();}
    16     while(c>='0'&&c<='9') {x=x*10+c-'0'; c=getchar();}
    17     return f*x;
    18 }
    19 inline void write(int x)
    20 {
    21     if(x<0) {putchar('-'); x=-x;}
    22     if(x>9) write(x/10);
    23     putchar(x%10+'0');
    24 }
    25 int n;
    26 int dis[maxn][maxn];
    27 struct node
    28 {
    29     int x,y;
    30 }a[maxn];
    31 signed main()
    32 {
    33     n=read();
    34     rep(i,1,n) 
    35     {
    36         a[i].x=read();a[i].y=read();
    37         rep(j,1,i-1) dis[i][j]=dis[j][i]=(abs(a[i].x-a[j].x)+abs(a[i].y-a[j].y)+1)/2;
    38     }
    39     rep(k,1,n)
    40         rep(i,1,n)
    41             rep(j,1,n)
    42                 if(dis[i][j]>max(dis[i][k],dis[k][j]))
    43                     dis[i][j]=dis[j][i]=max(dis[i][k],dis[k][j]);
    44     int ans=0;
    45     rep(i,1,n)
    46         rep(j,1,n)
    47             ans=max(ans,dis[i][j]);
    48     write(ans);
    49     return 0;
    50 }

    请各位大佬斧正(反正我不认识斧正是什么意思)

  • 相关阅读:
    Vue 目录
    【SVN】彻底 svn 服务器上的 删除某一个文件或文件夹
    【Linux】安装 PostgreSQL
    【Linux】安装 node.js
    在vue中使用echarts图表
    Grunt搭建自动化web前端开发环境--完整流程
    JavaScript 开发规范
    React设计思想
    js闭包的理解
    pytharm安装第三方库
  • 原文地址:https://www.cnblogs.com/handsome-zyc/p/11918403.html
Copyright © 2020-2023  润新知