185. [USACO Oct08] 挖水井

输入文件:water.in   输出文件:water.out   简单对比
时间限制:1
s   内存限制:128 MB

农夫约翰决定给他的N(1<=N<=300)个牧场浇水,这些牧场被自然的命名为1..N。他可以给一个牧场引入水通过在这个牧场挖一口井或者修一条管道使这个牧场和一个已经有水的牧场连接。

在牧场i挖一口井的花费是w_i(1<=w_i<=100000)。修建一条水管连接牧场i和牧场j的花费是p_ij(1<=p_ij<=100000;p_ij=p_ji;p_ii=0)。

请确定农夫约翰为了完成浇灌所有的牧场所需的最小的总花费。

题目名称:water

输入格式:

  • 第1行:一个单独的整数n。
  • 第2..n+1行:第i+1行包含一个单独的整数w_i。
  • 第n+2..2n+1行:第n+1+i行包含n个用空可分开的整数;其中第j个数是p_ij。

输入样例(file
water.in):

4

5

4

4

3

0 2 2 2

2 0 3 3

2 3 0 4

2 3 4 0

输入说明:

这里有4个牧场,修井和修管道的代价如图。

输出格式:

  • 第1行:一个单独的整数,表示花费。

输出样例(file
water.out):

9

输出说明:

农夫约翰可以在第4个牧场修井,并且将每个牧场和第一个连接起来,这样,花费是3+2+2+2=9。

(图片掉了,只好自己想象)

错因:

没有准确的记清楚算法的过程。

思路:

因为现在还不知道到底哪一个是挖通的,所以你需要新建一个“n+1”点,代表这是一个"暂时的水源"。

(一开始我的想法是枚举,但是这样做是行不通的,因为点太多了。)

暂时将这个点与其他的点都“连接”起来,连到这个刚建的“n+1”这个点上,然后再进行松弛。

那么,最终的结果即为最小的花费。

所以说,这道题除了新加了一个点以外,就是一道克鲁斯卡尔裸题!

代码酱=u=:

 #include<iostream>
#include<cstdio>
#include<algorithm>
#define maxn 100001 using namespace std; int dad[maxn],n,m,u,v,w,b[maxn],tot,q,k,x; struct Zb{
int x;
int y;
int w;
bool operator < (const Zb &q)const
{
return w < q.w;
}
}a[maxn]; int find(int x){//找父亲
if(x!=dad[x]) dad[x]=find(dad[x]);
return x == dad[x] ? x : find(dad[x]);
} void unionn(int x,int y){//找祖先,合并为同一祖先
int r1=find(x);
int r2=find(y);
if(r1!=r2)
dad[r1]=r2;
} int main()
{
//freopen("water.in","r",stdin);
//freopen("water.out","w",stdout);
cin>>n;
for(int i=;i<=n;i++){
cin>>b[i];
}
for(int i=;i<=n;i++) dad[i]=i;
for(int i=;i<=n;++i)
{
for(int j=;j<=n;++j){
cin>>x;
if(x!=){//将x所代表的连通的点记录下来
m++;//记录有几个点是连通的
a[m].x=i,a[m].y=j,a[m].w=x;
}
}
}
for(int i=;i<=n;i++)//将需要挖井的费用加入
{
m++;
a[m].x=i;
a[m].y=n+;
a[m].w=b[i];
m++;
a[m].x=n+;
a[m].y=i;
a[m].w=b[i];
}
sort(a+,a+m+);//将树从小到大排序
k=;
for(int i=;i<=m;i++){
int r1=find(a[i].x);
int r2=find(a[i].y);
if(r1!=r2)
{
dad[r1]=r2;
tot+=a[i].w;//统计下总费用
k++;
}
if(k==n) break;//当找完所有点
}
cout<<tot<<endl;
//fclose(stdin);
//fclose(stdout);
return ;
}

185.[USACO Oct08] 挖水井 (第三次考试大整理)的更多相关文章

  1. 186. [USACO Oct08] 牧场旅行 (第三次考试大整理)

    186. [USACO Oct08] 牧场旅行 输入文件:pwalk.in   输出文件:pwalk.out   简单对比 时间限制:1 s   内存限制:128 MB n个被自然地编号为1..n奶牛 ...

  2. 185. [USACO Oct08] 挖水井

    185. [USACO Oct08] 挖水井(点击转到COGS) 输入文件:water.in   输出文件:water.out   时间限制:1 s   内存限制:128 MB 描述 农夫约翰决定给他 ...

  3. 157. [USACO Nov07] 奶牛跨栏(第三次考试大整理)

    157. [USACO Nov07] 奶牛跨栏 输入文件:hurdles.in   输出文件:hurdles.out   简单对比 时间限制:1 s   内存限制:128 MB 译 by CmYkRg ...

  4. [NOIP2012] 同余方程(第三次考试大整理)

    1265. [NOIP2012] 同余方程 输入文件:mod.in   输出文件:mod.out   简单对比 时间限制:1 s   内存限制:128 MB [题目描述] 求关于 x 的同余方程 ax ...

  5. 186. [USACO Oct08] 牧场旅行

    186. [USACO Oct08] 牧场旅行(点击转到COGS) 输入文件:pwalk.in   输出文件:pwalk.out 时间限制:1 s   内存限制:128 MB 描述 n个被自然地编号为 ...

  6. cogs 184. [USACO Oct08] 搭建篱笆

    184. [USACO Oct08] 搭建篱笆 ★★   输入文件:quad.in   输出文件:quad.out   简单对比时间限制:1 s   内存限制:128 MB 勤奋的农夫约翰想要修建一个 ...

  7. cogs 186. [USACO Oct08] 牧场旅行 树链剖分 LCA

    186. [USACO Oct08] 牧场旅行 ★★☆   输入文件:pwalk.in   输出文件:pwalk.out   逐字节对比时间限制:1 s   内存限制:128 MB n个被自然地编号为 ...

  8. 任正非:华为三十年大限快到了 想不死就得新生(建立战略预备队)cool

    华为心声社区官方微信今日发布了任正非8月15日在华为公司内部做的关于战略预备队建设汇报的讲话.讲话内容中提到,华为公司需要组织.结构.人才等所有一切都变化,通过变化使新的东西成长起来.   任正非表示 ...

  9. 【USACO 2.1.3】三值的排序

    [题目描述] 排序是一种很频繁的计算任务.现在考虑最多只有三值的排序问题.一个实际的例子是,当我们给某项竞赛的优胜者按金银铜牌排序的时候.在这个任务中可能的值只有三种1,2和3.我们用交换的方法把他排 ...

随机推荐

  1. 洛谷 P2384 最短路 题解

    题面 这道题需要用到一个神奇的知识点:log(n*m)=log(n)+log(m): 所以对所有边权取个log,然后算log的最短路的同时维护乘积即可 #include <bits/stdc++ ...

  2. YII框架微信公众号

    <?phpnamespace backend\controllers; use yii\db\Query;use yii\web\Controller;use Yii;class Exam2Co ...

  3. python 列表操作-切片

  4. Python常用库整理

    Python常用库整理 Python中到底有哪些库会让程序员爱不释手?以至于一次上瘾,造成永久性伤害(这句话好像在哪里见过),今天我们就来整理一番这样的库,欢迎各位在评论区或者私信我添加或者修改相关库 ...

  5. 反向传播算法-损失函数&激活函数

    在监督学习中,传统的机器学习算法优化过程是采用一个合适的损失函数度量训练样本输出损失,对损失函数进行优化求最小化的极值,相应一系列线性系数矩阵W,偏置向量b即为我们的最终结果.在DNN中,损失函数优化 ...

  6. php程序Apache,IIS 7,nginx 伪静态配置方法总汇

    一,Apache 环境伪静态配置方法: 在根目录下放置一个.htaccess 文件,内容如下: <IfModule mod_rewrite.c> Options +FollowSymlin ...

  7. issue - 登录前的信息和标识文件

    DESCRIPTION (描述) /etc/issue 是一个文本文件,它包含了在登录提示符出现之前显示的信息或者系统标识.如果 getty(1) 支持的话,它可能包括多个 @char 和 \char ...

  8. 云主机使用ansible出现秘钥认证问题

    使用ansible的时候,出现如下秘钥失效的问题: root@jumpserver ftp]# ansible web -m ping The authenticity of host 'web-00 ...

  9. (转)JAVA socket 进行十六进制报文交互测试

    import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io. ...

  10. [易学易懂系列|golang语言|零基础|快速入门|(四)]

    今天开始,我们来写代码. 学习一门语言,最快的方式就是写代码,做项目. 别的学习教程,都是hello world. 我们就来点不一样的吧.我们不一样!不一样!不一样! 首先,打开VSCODE.( 关于 ...