第十五届浙江大学宁波理工学院程序设计大赛 F. Pylon Link(二分+图连通)

 

题目链接:https://ac.nowcoder.com/acm/contest/303/F

       要求一个最小的r使得所有的塔连通,所以我们就去二分半径r,然后用bfs去判断图是否连通就好了。


AC代码:

#include <bits/stdc++.h>
#define maxn 505
#define ll long long
using namespace std;
int T;
int n;
ll x[maxn],y[maxn];
ll pre[maxn][maxn];
bool vis[maxn];
  
ll dist(ll x1,ll y1,ll x,ll y){
    double ans = sqrt((x1-x)*(x1-x)+(y1-y)*(y1-y));
    return ceil(ans);
}
  
bool Check(ll r){
    memset(vis,false,sizeof(vis));
    queue<int> q;
    q.push(1);
    vis[1] = true;
    int ans = 0;
    while(!q.empty()){
        int u = q.front();
        q.pop();
        if(ans == n - 1)return true;
        for(int i=1;i<=n;i++){
            if(i == u) continue;
            if(vis[i] == false && pre[u][i] <= 2.0 * r){
                vis[i] = true;
                ans ++;
                q.push(i);
            }
        }
    }
    return false;
}
  
int main()
{
    scanf("%d",&T);
    while(T--){
        scanf("%d",&n);
        for(int i=1;i<=n;i++){
            scanf("%lld%lld",&x[i],&y[i]);
        }
        for(int i=1;i<=n;i++){
            for(int j=1;j<=n;j++){
                pre[i][j] = dist(x[i], y[i], x[j], y[j]);
                // Max = max(Max, pre[i][j]);
            }
        }
        ll l = 0, r = 2e18, mid;
        while(l < r){
            mid = (l + r) >> 1;
            if(Check(mid)){
                r = mid;
            }
            else l = mid + 1;
        }
        printf("%lld\n", r);
    }
    return 0;
}

 

全部评论

相关推荐

现在是2026.2.27,距离我2025.8.16在boss上投出第一份简历以来已经过去了半年多时间了。可能许多牛友对我并不陌生,在去年的89月份,深陷实习焦虑的我不停的在牛客上发帖求助,改过的简历不知道发了多少次。因为双非本的缘故,在实习这条路上可谓是处处碰壁。boss上四位数的沟通只换来两位数的回复,好不容易约到的面试很多还因为各种原因被挂。最终在9月底遇到了我实习过程中的第一个贵人:美团实习的ld。尽管那是个测开岗,但是没有关注我实际的技术栈,而是用专业的提问让我感受到了前所未有的面试体验,发掘了自己的技术闪光点。最终让我决定放弃了另一家中小厂的后端。他们非常尊重我对开发学习的热情,也给足了我自由发挥的空间,如果不是他们让我深度参与的用例生成项目,我或许连接到后面面试的机会都没有。尽管岗位不是开发,但这个过程中对大厂工作流程的深度参与以及对业务,项目,和技术的思维提升对我后续的开发面试一样提供了巨大的帮助。时代的洪流让我们每个人都被迫卷入其中,错过了互联网的红利时期,无论实习还是秋招都令不同背景的同学倍感压力,尽管如此我们依旧要相信:努力定有回报最后祝各位27的兄弟姐妹们,在暑期实习的面试路上一路披荆斩棘,策马扬鞭,用梦中情司的offer回应自己一直以来不愿放弃的拼搏timeline:2.6一面2.11&nbsp;二面2.12&nbsp;三面&nbsp;当天转hr面2.26&nbsp;hr面,面完云证+录用评估2.27&nbsp;offer
EternalRig...:看完太感人了吧,你这是真正的一路生化
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务