洛谷 P2212 [USACO14MAR]Watering the Fields S 题解
2021-08-03
20:31:13
链接:
https://www.luogu.com.cn/problem/P2212
题目详情:
Due to a lack of rain, Farmer John wants to build an irrigation system to send water between his N fields (1 <= N <= 2000). Each field i is described by a distinct point (xi, yi) in the 2D plane,with 0 <= xi, yi <= 1000. The cost of building a water pipe between two fields i and j is equal to the squared Euclidean distance between them:
(xi - xj)^2 + (yi - yj)^2
FJ would like to build a minimum-cost system of pipes so that all of his fields are linked together -- so that water in any field can follow a sequence of pipes to reach any other field.Unfortunately, the contractor who is helping FJ install his irrigation system refuses to install any pipe unless its cost (squared Euclidean
length) is at least C (1 <= C <= 1,000,000).
Please help FJ compute the minimum amount he will need pay to connect all his fields with a network of pipes.
给定 n 个点,第 i 个点的坐标为 (xi,yi),如果想连通第 i 个点与第 j 个点,需要耗费的代价为两点的距离。第 i 个点与第 j 个点之间的距离使用欧几里得距离进行计算,即:
(xi−xj)^2+(yi−yj)^2
我们规定耗费代价小于 c 的两点无法连通,求使得每两点都能连通下的最小代价,如果无法连通输出 -1。
输入格式
* Line 1: The integers N and C.
* Lines 2..1+N: Line i+1 contains the integers xi and yi.
第一行两个整数 n,cn,c 代表点数与想要连通代价不能少于的一个数。
接下来 n 行每行两个整数 xi,yi 描述第 i 个点。
输出格式
* Line 1: The minimum cost of a network of pipes connecting the
fields, or -1 if no such network can be built.
一行一个整数代表使得每两点都能连通下的最小代价,如果无法连通输出 -1。
输入输出样例
3 11
0 2
5 0
4 3
46
说明/提示
INPUT DETAILS:
There are 3 fields, at locations (0,2), (5,0), and (4,3). The contractor will only install pipes of cost at least 11.
OUTPUT DETAILS:
FJ cannot build a pipe between the fields at (4,3) and (5,0), since its cost would be only 10. He therefore builds a pipe between (0,2) and (5,0) at cost 29, and a pipe between (0,2) and (4,3) at cost 17.
Source: USACO 2014 March Contest, Silver
数据规模与约定
对于 100% 的数据,1≤n≤2000,0≤xi,yi≤1000,1≤c≤10^6。
题目分析:
这是一道prim算法题,我们可以利用prim算法的模板,加上题目的限制条件两点距离不得小于c,就可以解出该题。
话不多说直接上代码吧
#include<iostream>
#include<cmath>
using namespace std;
const int N=2005;
const int INF=1e8;
int n,c;
struct Node{
int x,y;
}node[N];
int g[N][N];//每个点之间的距离
int dist[N];
bool st[N];
int distance(int x1,int y1,int x2,int y2){
int t=pow((x1-x2),2)+pow((y1-y2),2);
return t;
} int Prim(){
int res=0;
for(int i=0;i<n-1;i++){
for(int j=i+1;j<n;j++){
int x1=node[i].x,y1=node[i].y,x2=node[j].x,y2=node[j].y;
int t=distance(x1,y1,x2,y2);
if(t>=c)g[i][j]=g[j][i]=t;
else g[i][j]=g[j][i]=INF;
}
}
for(int i=0;i<n;i++){
int t=-1;
for(int j=0;j<n;j++){
if(!st[j]&&(t==-1||dist[t]>dist[j]))t=j;
}
if(i&&dist[t]==INF)return -1;
if(i)res+=dist[t];
st[t]=true;
for(int j=1;j<n;j++)
dist[j]=min(dist[j],g[t][j]);
}
return res;
} int main()
{
cin>>n>>c;
for(int i=0;i<n;i++){
int x,y;
cin>>x>>y;
node[i]={x,y};
dist[i]=INF;
g[i][i]=INF;
}
int res=Prim();
cout<<res;
return 0;
}
2021-08-03
20:43:34
洛谷 P2212 [USACO14MAR]Watering the Fields S 题解的更多相关文章
- 洛谷——P2212 [USACO14MAR]浇地Watering the Fields
P2212 [USACO14MAR]浇地Watering the Fields 题目描述 Due to a lack of rain, Farmer John wants to build an ir ...
- 洛谷 P2212 [USACO14MAR]浇地Watering the Fields 题解
P2212 [USACO14MAR]浇地Watering the Fields 题目描述 Due to a lack of rain, Farmer John wants to build an ir ...
- 洛谷 P2212 [USACO14MAR]浇地Watering the Fields
传送门 题解:计算欧几里得距离,Krusal加入边权大于等于c的边,统计最后树的边权和. 代码: #include<iostream> #include<cstdio> #in ...
- 洛谷P1484 种树&洛谷P3620 [APIO/CTSC 2007]数据备份 题解(堆+贪心)
洛谷P1484 种树&洛谷P3620 [APIO/CTSC 2007]数据备份 题解(堆+贪心) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/132 ...
- 洛谷P3387 【模板】缩点 题解
背景 今天\(loj\)挂了,于是就有了闲情雅致来刷\(luogu\) 题面 洛谷P3387 [模板]缩点传送门 题意 给定一个\(n\)个点\(m\)条边有向图,每个点有一个权值,求一条路径,使路径 ...
- [NOI导刊2010提高&洛谷P1774]最接近神的人 题解(树状数组求逆序对)
[NOI导刊2010提高&洛谷P1774]最接近神的人 Description 破解了符文之语,小FF开启了通往地下的道路.当他走到最底层时,发现正前方有一扇巨石门,门上雕刻着一幅古代人进行某 ...
- [洛谷P1029]最大公约数与最小公倍数问题 题解(辗转相除法求GCD)
[洛谷P1029]最大公约数与最小公倍数问题 Description 输入二个正整数x0,y0(2<=x0<100000,2<=y0<=1000000),求出满足下列条件的P, ...
- BZOJ5288 & 洛谷4436 & LOJ2508:[HNOI/AHOI2018]游戏——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=5288 https://www.luogu.org/problemnew/show/P4436 ht ...
- BZOJ4943 & 洛谷3823 & UOJ315:[NOI2017]蚯蚓排队——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=4943 http://uoj.ac/problem/315 https://www.luogu.or ...
- BZOJ1229 & 洛谷2917:[USACO2008 NOV]toy 玩具 & 洛谷4480:[BJWC2018]餐巾计划问题——题解
标题很长emmm…… [USACO2008 NOV]toy 玩具 https://www.luogu.org/problemnew/show/P2917 https://www.lydsy.com/J ...
随机推荐
- unity VideoPlayer 视频静音
standVideo.SetDirectAudioMute(0,true);
- 升级TLS1.3
初衷:简简单单在网站上挂个单点登录,先在本地跑起来,然后再放到服务器上.然而问题来了: 请求被中止: 未能创建 SSL/TLS 安全通道 简简单单的百度一下,只需要加上这行就可以了~Easy Serv ...
- wmi和wmic
https://baike.baidu.com/item/Windows%20Management%20Instrumentation/572501?fromtitle=WMI&fromid= ...
- ubuntu 16.04 Chrome安装
打开终端 输入 命令1:sudo wget http://www.linuxidc.com/files/repo/google-chrome.list -P /etc/apt/sources.list ...
- SPI接口(续一)
SPI接口共涉及到11个寄存器,下面就来对它们进行具体分析. 先来看SPI配置寄存器CFG,下表是它的全部位结构,其地址分别为0x40058000(SPI0),0x4005C000(SPI1). (1 ...
- Docker-Compose实战<下篇>
本文是在上一篇文章的基础上做的一些内容追加,上文最后截止内容是docker-compose build将镜像生成完成.接下来我将继续写启动相关服务,访问服务以及常用命令使用等. 1 启动镜像 使用命令 ...
- Django 知识点总结
知识点总结 一.URL: 1.在python 正则表达式中,正则表达式命名组的语法是(?P<name>pattern),其中命名组中的命名就是name,并且pattern 是某些匹配的模式 ...
- Oracle ASM磁盘组的常用操作
1.查看现有磁盘组信息 select group_number gno,name,state,type,total_mb,free_mb,required_mirror_free_mb rmfmb,u ...
- golang基本数据类型
1.整形 默认整数类型为int 变量在选择时应遵循最小化原则 1.1 有符号(int) 类型 取值范围 占用空间(字节) int8 -2^7到 2^7-1 (-128到127) 1 int16 -2^ ...
- go 死锁示例
以下代码不会有任何打印.原因是:channel ch 在make 时是无缓冲区的channel.无缓冲区的channel 发送一个数据进入后需要等待这个数据被消耗才能继续发送下一个数据.然而getFr ...