【BZOJ3943】[Usaco2015 Feb]SuperBull

Description

Bessie and her friends are playing hoofball in the annual Superbull championship, and Farmer John is in charge of making the tournament as exciting as possible. A total of N (1 <= N <= 2000) teams are playing in the Superbull. Each team is assigned a distinct integer team ID in the range 1...2^30-1 to distinguish it from the other teams. The Superbull is an elimination tournament -- after every game, Farmer John chooses which team to eliminate from the Superbull, and the eliminated team can no longer play in any more games. The Superbull ends when only one team remains.Farmer John notices a very unusual property about the scores in
matches! In any game, the combined score of the two teams always ends up being the bitwise exclusive OR (XOR) of the two team IDs. For example, if teams 12 and 
20 were to play, then 24 points would be scored in that game, since 01100 XOR 10100 = 11000.Farmer John believes that the more points are scored in a game, the more exciting the game is. Because of this, he wants to choose a series of games to be played such that the total number of points scored in the Superbull is maximized. Please help Farmer John organize the matches.
贝西和她的朋友们在参加一年一度的“犇”(足)球锦标赛。FJ的任务是让这场锦标赛尽可能地好看。一共有N支球队参加这场比赛,每支球队都有一个特有的取值在1-230-1之间的整数编号(即:所有球队编号各不相同)。“犇”锦标赛是一个淘汰赛制的比赛——每场比赛过后,FJ选择一支球队淘汰,淘汰了的球队将不能再参加比赛。锦标赛在只有一支球队留下的时候就结束了。FJ发现了一个神奇的规律:在任意一场比赛中,这场比赛的得分是参加比赛两队的编号的异或(Xor)值。例如:编号为12的队伍和编号为20的队伍之间的比赛的得分是24分,因为 12(01100) Xor 20(10100) = 24(11000)。FJ相信比赛的得分越高,比赛就越好看,因此,他希望安排一个比赛顺序,使得所有比赛的得分和最高。请帮助FJ决定比赛的顺序

Input

The first line contains the single integer N. The following N lines contain the N team IDs.
第一行包含一个整数N接下来的N行包含N个整数,第i个整数代表第i支队伍的编号, 1<=N<=2000

Output

Output the maximum possible number of points that can be scored in the Superbull.
一行,一个整数,表示锦标赛的所有比赛的得分的最大值

Sample Input

4
3
6
9
10

Sample Output

37

HINT

样例解释:
FJ先让编号为3和编号为9的队伍进行比赛,然后让编号为9的队伍赢得比赛(淘汰编号为6的队伍),现在
剩下了编号为6910的队伍。然后他让编号为6和编号为9的队伍比赛,然后让编号为6的队伍赢得比赛。现在编号为6
10的队伍留了下来最后让编号为6和编号为10的队伍比赛,让编号为10的队伍赢得比赛。所有比赛的得分和就是:(
3Xor9)+(6Xor9)+(6Xor10)=10+15+12=37

题解:本题看起来很麻烦,但我们发现n只有2000,于是想到可以把所有牛当成点,所有比赛当成边,然后跑一遍最大生成树就可以了。

#include<stdio.h>
#include<iostream>
#include<algorithm>
using namespace std;
int n,m,sum;
long long ans;
struct match
{
int from,to,val;
}s[2010*2010];
int p[2010],f[2010];
bool cmp(match a,match b)
{
return a.val>b.val;
}
int find(int x)
{
if(f[x]!=x)
f[x]=find(f[x]);
return f[x];
}
int main()
{
scanf("%d",&n);
int i,j,ra,rb;
for(i=1;i<=n;i++)
{
f[i]=i;
scanf("%d",&p[i]);
for(j=1;j<i;j++)
{
s[m].from=j;
s[m].to=i;
s[m++].val=p[i]^p[j];
}
}
sort(s,s+m,cmp);
for(i=0;i<m;i++)
{
ra=find(s[i].from);
rb=find(s[i].to);
if(ra!=rb)
{
f[ra]=rb;
ans+=(long long)s[i].val;
sum++;
if(sum==n-1)
break;
}
}
printf("%lld",ans);
return 0;
}

【BZOJ3943】[Usaco2015 Feb]SuperBull 最大生成树的更多相关文章

  1. Bzoj3943 [Usaco2015 Feb]SuperBull

    3943: [Usaco2015 Feb]SuperBull Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 300  Solved: 185 Desc ...

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

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

  3. [bzoj3943][Usaco2015 Feb]SuperBull_Kruskal

    SuperBull bzoj-3943 Usaco-2015 Feb 题目大意:贝西和她的朋友们在参加一年一度的“犇”(足)球锦标赛.FJ的任务是让这场锦标赛尽可能地好看.一共有N支球队参加这场比赛, ...

  4. 【bzoj3943】[Usaco2015 Feb]SuperBull

    题目描述 Bessie and her friends are playing hoofball in the annual Superbull championship, and Farmer Jo ...

  5. BZOJ 3943 [Usaco2015 Feb]SuperBull:最大生成树

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3943 题意: 有n只队伍,每个队伍有一个编号a[i]. 每场比赛有两支队伍参加,然后选一支 ...

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

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

  7. 【BZOJ3940】【BZOJ3942】[Usaco2015 Feb]Censoring AC自动机/KMP/hash+栈

    [BZOJ3942][Usaco2015 Feb]Censoring Description Farmer John has purchased a subscription to Good Hoov ...

  8. 3942: [Usaco2015 Feb]Censoring [KMP]

    3942: [Usaco2015 Feb]Censoring Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 375  Solved: 206[Subm ...

  9. bzoj3940: [Usaco2015 Feb]Censoring

    AC自动机.为什么洛谷水题赛会出现这种题然而并不会那么题意就不说啦 .终于会写AC自动机判断是否是子串啦...用到kmp的就可以用AC自动机水过去啦 #include<cstdio> #i ...

随机推荐

  1. namp命令详解

    我将用两个不同的部分来涵盖大部分NMAP的使用方法,这是nmap关键的第一部分.在下面的设置中,我使用两台已关闭防火墙的服务器来测试Nmap命令的工作情况. 192.168.0.100 – serve ...

  2. Struts2 的Action中取得请求参数值的几种方法

    先看GetRequestParameterAction类代码:  Java代码 public class GetRequestParameterAction extends ActionSupport ...

  3. easui Pagination Layout

    分页显示方式有几种 layout: ['first', 'prev', 'next', 'last'] layout: ['list', 'sep', 'first', 'prev', 'sep', ...

  4. LIBSVM使用方法及参数设置 主要参考了一些博客以及自己使用经验。

    主要参考了一些博客以及自己使用经验.收集来觉得比较有用的. LIBSVM 数据格式需要---------------------- 决策属性  条件属性a  条件属性b  ... 2    1:7   ...

  5. Solr学习和总结(线下1)

    2015-09-08 上午 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ...

  6. 关于Unity的入门游戏飞机大战的开发(下)

    开发思路: 1: 修改测试模式,去掉开始按钮方便开发,加入敌机的资源2: 创建敌机 添加刚体,碰撞器组件,添加帧动画播放组件;3: 创建敌机出现的队形;4: 根据队形随机 生成我们的敌机,调整敌机的速 ...

  7. zebra/quagga线程分析

    /* 线程按照不同的功能进行分类.有6条双链,分别表示不同类型的线程.将要运行的时候, * 就从不同的链表中取出,添加到ready链表中,运行完成之后,将线程结构体清空放到 * unuse链表中.一般 ...

  8. imx6 uart分析

    本文主要记录: 1.uart设备注册 2.uart驱动注册 3.上层应用调用有些地方理解的还不是很透彻,希望指正. 1.uart设备注册过程 MACHINE_START(MX6Q_SABRESD, & ...

  9. 【转载】C#进阶系列——动态Lamada(二:优化)

    前言:前几天写了一篇动态Lamada的文章C#进阶系列——动态Lamada,受园友xiao99的启发,今天打算来重新优化下这个动态Lamada的工具类.在此做个笔记,以免以后忘了. 一.原理分析 上篇 ...

  10. unity3d绘画手册-------地形高度调节

    高度 所有地形 (terrain) 编辑工具的使用都很简单.您可以在场景视图 (scene view)中逐步绘制地形 (terrain).对于高度工具和其他所有工具,您只需选中工具,然后在场景视图 ( ...