题目链接


Solution

基本上就是个板子.

因为 \(n\) 很小,只有 \(2000\),所以直接暴力建图,然后跑最小生成树就好了.

Code

  1. #include<bits/stdc++.h>
  2. #define ll long long
  3. using namespace std;
  4. const int maxn=2008;
  5. struct sj{
  6. int to,fr; ll w;
  7. }a[maxn*maxn];
  8. int fa[maxn],num[maxn];
  9. int n,cnt;
  10. ll w[maxn],ans;
  11. ll read()
  12. {
  13. char ch=getchar(); ll f=1,w=0;
  14. while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
  15. while(ch<='9'&&ch>='0'){w=w*10+ch-'0';ch=getchar();}
  16. return f*w;
  17. }
  18. bool cmp(sj x,sj y)
  19. {return x.w>y.w;}
  20. int find(int x)
  21. {
  22. if(fa[x]==x)return x;
  23. else return fa[x]=find(fa[x]);
  24. }
  25. void join(int x,int y)
  26. {
  27. x=find(x),y=find(y);
  28. if(num[x]>num[y])swap(x,y);
  29. if(x!=y)fa[x]=y;
  30. num[y]+=num[x]; num[x]=0;
  31. }
  32. int main()
  33. {
  34. cin>>n;
  35. for(int i=1;i<=n;i++)
  36. w[i]=read(),fa[i]=i;
  37. for(int i=1;i<=n;i++)
  38. for(int j=i+1;j<=n;j++)
  39. a[++cnt].fr=i,a[cnt].to=j,a[cnt].w=w[i]^w[j];
  40. sort(a+1,a+cnt+1,cmp);
  41. for(int i=1;i<=cnt;i++)
  42. {
  43. int x=a[i].fr,y=a[i].to;
  44. if(find(x)!=find(y))
  45. join(x,y),ans+=a[i].w;
  46. }
  47. cout<<ans<<endl;
  48. }

[USACO15FEB]Superbull (最小生成树)的更多相关文章

  1. [USACO15FEB]Superbull 超级牛

    题意概况 题目描述 \(Bessie\)和她的朋友们正在一年一度的\(Superbull\)锦标赛中打球,而\(Farmer John\)负责让比赛尽可能激动人心. 总共有 \(N\) 支队伍 \(1 ...

  2. 【BZOJ3943】[Usaco2015 Feb]SuperBull 最小生成树

    [BZOJ3943][Usaco2015 Feb]SuperBull Description Bessie and her friends are playing hoofball in the an ...

  3. BZOJ 3943: [Usaco2015 Feb]SuperBull 最小生成树

    Code: // luogu-judger-enable-o2 #include<bits/stdc++.h> #define setIO(s) freopen(s".in&qu ...

  4. 最小生成树(Kruskal算法-边集数组)

    以此图为例: package com.datastruct; import java.util.Scanner; public class TestKruskal { private static c ...

  5. 最小生成树计数 bzoj 1016

    最小生成树计数 (1s 128M) award [问题描述] 现在给出了一个简单无向加权图.你不满足于求出这个图的最小生成树,而希望知道这个图中有多少个不同的最小生成树.(如果两颗最小生成树中至少有一 ...

  6. poj 1251 Jungle Roads (最小生成树)

    poj   1251  Jungle Roads  (最小生成树) Link: http://poj.org/problem?id=1251 Jungle Roads Time Limit: 1000 ...

  7. 【BZOJ 1016】【JSOI 2008】最小生成树计数

    http://www.lydsy.com/JudgeOnline/problem.php?id=1016 统计每一个边权在最小生成树中使用的次数,这个次数在任何一个最小生成树中都是固定的(归纳证明). ...

  8. 最小生成树---Prim算法和Kruskal算法

    Prim算法 1.概览 普里姆算法(Prim算法),图论中的一种算法,可在加权连通图里搜索最小生成树.意即由此算法搜索到的边子集所构成的树中,不但包括了连通图里的所有顶点(英语:Vertex (gra ...

  9. Delaunay剖分与平面欧几里得距离最小生成树

    这个东西代码我是对着Trinkle的写的,所以就不放代码了.. Delaunay剖分的定义: 一个三角剖分是Delaunay的当且仅当其中的每个三角形的外接圆内部(不包括边界)都没有点. 它的存在性是 ...

随机推荐

  1. [论文理解] Connectionist Text Proposal Network

    Connectionist Text Proposal Network 简介 CTPN是通过VGG16后在特征图上采用3*3窗口进行滑窗,采用与RPN类似的anchor机制,固定width而只预测an ...

  2. Python——函数基础

    函数是什么 它相当于一个独立的代码块,可以被重复使用,如果需要增加一个功能或者修改一个功能,只需要,增加或者修改函数即可. 函数分类 内置函数 python解释器已经为我们定义好的参数,比如:len( ...

  3. MySQL中同时存在创建和更新时间戳字段解决方法浅析

    MySQL中同时存在创建和更新时间戳字段解决方法浅析 明确我的MySQL版本.mysql> SELECT VERSION();+------------+| VERSION() |+------ ...

  4. linux 使用wget下载https连接地址cannot verify github.com's certificate

    使用linux的wget下载时候会出现网站没有证书警告的问题, 例如下载git时,可以使用wget https://github.com/git/git/archive/v2.3.0.zip --no ...

  5. 【kmp】bzoj3620: 似乎在梦中见过的样子

    考察kmp理解题 Description “Madoka,不要相信 QB!”伴随着 Homura 的失望地喊叫,Madoka 与 QB 签订了契约. 这是 Modoka 的一个噩梦,也同时是上个轮回中 ...

  6. Linux - 链接概念详解

    1> Linux链接概念Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link).默认情况下,ln命令产生硬链接. [硬连接]硬连接指通过 ...

  7. (66)zabbix导入/导出配置文件

    通过导入/导出zabbix配置文件,我们可以将自己写好的模板等配置在网络上分享,我们也可以导入网络上分享的配置文件 配置文件有两种格式,分为为xml与json,通过zabbix管理界面可以导出xml, ...

  8. Golang 简单 http 代理转发

    程序基本实现了对http的完整转发,目前暂不支持https windows需要在设置中的网络>代理设置为手动,并开启代理服务器,填写ip和端口 // httpForward package ma ...

  9. kali下安装中文输入法

    参考网址:https://blog.csdn.net/qq_37367124/article/details/79229739 更性源 vim /etc/apt/source.list 设置更新源 更 ...

  10. Inkscape基础

    What is Inkscape A program for creating vector graphics For Windows, Mac OS, and Linux Open source F ...