P1522 [USACO2.4]牛的旅行 Cow Tours

news/2024/11/29 8:02:33/

P1522 [USACO2.4]牛的旅行 Cow Tours

思路

  • 牧区可以抽象成图上每一个点
  • 牧场可以看作连通块
  • 新牧场的最大直径=两点到未连通前两个牧场的最大距离(保证满足题意:一个牧场的直径就是牧场中最远的两个牧区的最短距离)+两点之间最短距离

实现

  • 邻接矩阵存图
  • floyed计算连通块内最短距离
  • 一个数组存储它所在的连通块的最大距离
  • 枚举任意两点,记录添加后最大距离

Code

#include<cstdio>
#include<cstring>
#include<iostream>
#include<cmath>using namespace std;int n;
const int inf=0x3f3f3f3f;
const int maxn=200;
double mp[maxn][maxn];
int k=0;
int f[maxn];
double disf[maxn];
struct nodep{int x,y;
}p[maxn];
double ans;
double ll=0;
double disd(int x,int y){return sqrt((p[x].x-p[y].x)*(p[x].x-p[y].x)+(p[x].y-p[y].y)*(p[x].y-p[y].y));
} 
int main(){scanf("%d",&n);memset(disf,0,sizeof(disf)); memset(mp,0,sizeof(mp));for(int i=1;i<=n;++i) scanf("%d%d",&p[i].x,&p[i].y);char c[maxn]; for(int i=1;i<=n;++i){scanf("%s",c);int len=strlen(c);for(int j=1;j<=len;++j){if(c[j-1]=='1') mp[i][j]=disd(i,j); else if(i!=j) mp[i][j]=inf*1.0;}}//floyedfor(int kk=1;kk<=n;++kk)for(int i=1;i<=n;++i)for(int j=1;j<=n;++j)mp[i][j]=min(mp[i][j],mp[i][kk]+mp[kk][j]);for(int i=1;i<=n;++i)for(int j=1;j<=n;++j){//因为把图上的最短路已经算出,所以 每个点所能到达的最大值 即最远两个点的图上的最短距离if(mp[i][j]!=inf) disf[i]=max(disf[i],mp[i][j]);//求每个点能连通的最大距离ll=max(ll,disf[i]);//未添加路径前的最大直径 }double lll=inf;for(int i=1;i<=n;++i)for(int j=1;j<=n;++j)if(mp[i][j]==inf)//枚举每一种添加边的情况,取最小值 lll=min(disf[i]+disd(i,j)+disf[j],lll);//未连通的两个点添加图上的一条边最短距离+这两点分别到本图上的最短距离即为新图的直径ans=max(ll,lll);printf("%.6f",ans);return 0; 
}

此题需要理清楚概念(比较绕


http://www.ppmy.cn/news/280931.html

相关文章

国际电商网站APP开发-国际电商网站,跨境方案

跨境电商一种在国际贸易中进行电子商务的策略。它涉及到在线销售产品或服务给海外消费者&#xff0c;通常涉及到国际支付、物流和海外市场营销的问题。以下是一些跨境电商方案的例子&#xff1a; 跨境电商平台&#xff1a;建立自己的跨境电商平台&#xff0c;提供海外消费者便捷…

[P1522]牛的旅行

原题链接 又是 01之间不打空格的输入 又是 我最讨厌的字符串 设计输入格式的人 为什么这么 讨厌空格呢 先跑一遍Floyd 找出哪几个点不在一个牧区内 然后看 连接哪两个点最路径最短 这个题的难度评级 为什么会这么高呢 #include<iostream> #include<cstd…

LeetCode 1522. N 叉树的直径

LeetCode 1522. N 叉树的直径 文章目录 LeetCode 1522. N 叉树的直径题目描述一、解题关键词二、解题报告1.思路分析2.时间复杂度3.代码示例2.知识点 总结相同题目 题目描述 给定一棵 N 叉树的根节点 root &#xff0c;计算这棵树的直径长度。 N 叉树的直径指的是树中任意两个节…

jzoj P1522 无线网络

题目大意&#xff1a; 一个由n台计算机组成的无线网络,每台计算机都能跟与它距离不超过d的任何计算机通讯。地震时&#xff0c;所有计算机都瘫痪了。在修复的过程中&#xff0c;他们需要测试一下某两台计算机能否通讯&#xff08;如果他们能通过别的正常的计算机进行通讯&…

51Nod - 1522 区间dp

题意&#xff1a; 题目链接&#xff1a;https://www.51nod.com/onlineJudge/questionCode.html#!problemId1522 思路&#xff1a; 很好的区间dp。 从1开始填起&#xff0c;两个1能存在的位置分别是1和2&#xff0c;1和2*n&#xff0c;2*n-1和2*n。根据每种不同的填法&#x…

LeetCode 1522. Diameter of N-Ary Tree(递归)

文章目录 1. 题目2. 解题 1. 题目 Given a root of an N-ary tree, you need to compute the length of the diameter of the tree. The diameter of an N-ary tree is the length of the longest path between any two nodes in the tree. This path may or may not pass th…

以太网帧长度1518、1522、1536的说明

一、IEEE802.3 以太网帧结构&#xff1a; Preamble (7-bytes) &#xff0d;&#xff0d;前导码 Start Frame Delimiter (1-byte) &#xff0d;&#xff0d;定界符 Dest. MAC Address (6-bytes) &#xff0d;&#xff0d;目的地址 Source MAC Address (6-bytes) &#xf…