洛谷 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 ...
 
随机推荐
- 搭建ftp服务器的超详细步骤
			
第一步:打开控制面板. 1.1选择程序这个选项. 1.2选择启用或关闭window功能 1.3勾选如图有红箭头的这几个选项. 第二步:搜索iis且将其打开 . 2.1点击网站,且点击添加网站 物理路径 ...
 - 基于CentOS搭建FTP文件服务实战
			
参考教程来自腾讯云开发者实验室:https://cloud.tencent.com/developer/labs/lab/10123 话不多少,进入流程 1. 安装vsftpd 使用 yum 安装 v ...
 - 04jsp(1)
			
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding= ...
 - SQL in查询字段为Guid拼接处理办法
			
场景一:在我们写SQL脚本执行普通的Id 为Int,Long 类型查询为 譬如: select *from Table where id in (1,2,3); 场景二:SQL in 查询,当查询字段 ...
 - map转listmap
			
package com;import java.util.*;import java.util.stream.Collectors;public class LambadaTest { public ...
 - idea2023最新激活方式
			
激活文件下载https://wwtg.lanzouo.com/iAZ1W0kwkgpe 激活教程https://www.666bear.com/244.html
 - elasticSearch(六)--全文搜索
			
数据案例 1.匹配查询 a.单词查询 执行match步骤: ·检查field类型:title字段为(analyzed)字符串,所以搜索时,title需要被分析. ·分析查询字符串:QUICK! 经过标 ...
 - HTML基础知道了解
			
第1章 Html介绍 1.Html和CSS的关系 1.1 学习web前端开发基础技术需要掌握:HTML.CSS.JavaScript语言.下面我们就来了解下这三门技术都是用来实现什么的: 1.2 HT ...
 - keypress和keydown的区别
			
keypress不识别功能键,比如ctrl,alt,shift,上下左右.keypress返回的ascII码区分大小写.输入小写a返回97,输入大写A返回65. keydown识别.keydown返回 ...
 - JS实现另存/打印功能
			
代码实现 <div id="main"> <-- 需要保存的内容 --></div> <div @click="printdiv ...