此题似乎显然最小生成树,小技巧需要注意:

在每个点出井水,需要花费,实际上可以把井水视作所有井下统一的一点,需要走路径到达此点,新图上再最小生成树

将点化作边处理

还有题目写的数据范围一般不可信,开大点总是好的,代码就不贴了吧

#include<bits/stdc++.h>
#define rep(i,x,y) for(register ll i=x;i<=y;i++)
#define ll long long
using namespace std;
const ll N=;
const ll M=;
inline ll read(){
ll x=,f=;char ch=getchar();
while(!isdigit(ch)){if(ch=='-')f=-;ch=getchar();}
while(isdigit(ch)){x=(x<<)+(x<<)+(ch^);ch=getchar();}
return x*f;}
ll n,m,a[N],g[N][N],x,cnt,xx,yy,fa[N];ll ans;
inline ll find(ll x){return fa[x]==x?x:fa[x]=find(fa[x]);}
struct node{ll u,v,w;}e[M];
bool cmp(node a,node b){return a.w<b.w;}
int main(){
n=read();cnt=n+;
rep(i,,n) fa[i]=i,x=read(),e[++m]=(node){i,n+,x};fa[n+]=n+;
rep(i,,n)rep(j,,n) g[i][j]=read();
rep(i,,n)rep(j,i+,n) e[++m]=(node){i,j,g[i][j]};
sort(e+,e++m,cmp);
rep(i,,m){
xx=find(e[i].u),yy=find(e[i].v);
if(xx!=yy) fa[xx]=yy,cnt--,ans+=e[i].w;
if(cnt==) break;
}printf("%d\n",ans);return ;
}

luogu 1550 [Usaco2008 Oct]打井 最小生成树+小技巧的更多相关文章

  1. [BZOJ1601][Usaco2008 Oct]灌水 最小生成树水题

    1601: [Usaco2008 Oct]灌水 Time Limit: 5 Sec  Memory Limit: 162 MBSubmit: 2121  Solved: 1393[Submit][St ...

  2. BZOJ1600: [Usaco2008 Oct]建造栅栏

    1600: [Usaco2008 Oct]建造栅栏 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 825  Solved: 473[Submit][Sta ...

  3. BZOJ1599: [Usaco2008 Oct]笨重的石子

    1599: [Usaco2008 Oct]笨重的石子 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 758  Solved: 513[Submit][ ...

  4. BZOJ 1599: [Usaco2008 Oct]笨重的石子( 枚举 )

    直接枚举 ------------------------------------------------------------------------------- #include<cst ...

  5. BZOJ 1600: [Usaco2008 Oct]建造栅栏( dp )

    QAQ我没读过书...四边形都不会判定了 简单的dp.... --------------------------------------------------------------------- ...

  6. BZOJ 1601 [Usaco2008 Oct]灌水

    1601: [Usaco2008 Oct]灌水 Time Limit: 5 Sec  Memory Limit: 162 MB Description Farmer John已经决定把水灌到他的n(1 ...

  7. BZOJ 1600: [Usaco2008 Oct]建造栅栏

    1600: [Usaco2008 Oct]建造栅栏 Time Limit: 5 Sec  Memory Limit: 64 MB Description 勤奋的Farmer John想要建造一个四面的 ...

  8. 1601: [Usaco2008 Oct]灌水

    1601: [Usaco2008 Oct]灌水 Time Limit: 5 Sec  Memory Limit: 162 MB Submit: 1342  Solved: 881 [Submit][S ...

  9. 1599: [Usaco2008 Oct]笨重的石子

    1599: [Usaco2008 Oct]笨重的石子 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 795  Solved: 543[Submit][ ...

随机推荐

  1. javascript之复习(框架里的方法们)

    继上次整理,一些东西没有整理完.就写在这.可能比较乱比较杂,因为都是整理的一些东西,也没有到做成专题的程度. 1.String.repeat() 大家要实现重复一个字符串的重复怎么写呢,反正我的第一想 ...

  2. js常用的正则表达式

    一.校验数字的表达式 数字:^[0-9]*$ n位的数字:^\d{n}$ 至少n位的数字:^\d{n,}$ m-n位的数字:^\d{m,n}$ 零和非零开头的数字:^(0|[1-9][0-9]*)$ ...

  3. [SDOI2011]计算器(exgcd&BSGS)

    k=1:裸的快速幂k=2:xy=z+kp,直接exgcd,这个可以不用解释了,不懂的同学可以看代码 k=3:裸的BSGS 重点是k=3(BSGS学习)ax=b(mod p)求解这个同余方程只能求gcd ...

  4. 苹果电脑利用wget总是会出现无法建立 SSL 连接的问题

    在做迁徙学习的过程中,需要下载已经训练好的Inception_v3模型,首先我们为了将下载的模型保存到指定的地方,我们需要利用 wget -P 想要保存的目录 模型的网址,例如 wget -P /Vo ...

  5. IntelliJ IDEA配置maven远程仓库

    最近在搭建springMVC+mybatis的框架,在添加jar包的时候出问题了.以前都是直接将jar包放到lib里面即可,但是看到现在用maven的比较多,就去配置maven.然后发现,在添加某个版 ...

  6. gitlab 500 服务器错误 重启解决了

    查看状态 sudo gitlab-ctl status # 启动Gitlab所有组件 sudo gitlab-ctl start # 停止Gitlab所有组件 sudo gitlab-ctl stop ...

  7. 定制kickstart重建CentOS7.5镜像用于U盘引导安装

    有什么问题或者疑惑,可以留言,全力解答. ISO 镜像制作 U 盘安装盘 U盘安装CentOS7.4 U盘实现CentOS7.3全自动安装系统 https://www.cnblogs.com/pany ...

  8. maomao的fft板子

    \(QwQ\) #include <cmath> #include <cstdio> #include <cstring> #include <iostrea ...

  9. 原生JS实现全选和不全选

    案例演示 源代码 <!DOCTYPE html> <html> <head lang="en"> <meta charset=" ...

  10. qml Loader异步导致ComBoBox数据乱序

    qml  Loader异步导致ComBoBox数据乱序 当使用Loader动态加载qml文件时, 如果将Loader设置为异步,那么动态加载的组件内的ComBoBox数据将呈现乱序状态, 代码请见下文 ...