【USACO2015feb】超牛(silver T2)

题目描述

超牛{ superbull.pas/c/cpp}

 

农场有N (1 <= N <= 2000)头牛参加“超级牛声”比赛,每头牛有一个唯一的编号,范围是1...2^30-1。比赛采用1对1的淘汰赛,在一场比赛中,FJ有权决定淘汰其中的一头牛,并将两头牛的编号的XOR值作为本场比赛的得分。请帮助FJ设计比赛过程,使得整个赛事最后的总分值最大。

输入

第一行一个整数N。

接下来N行,每行一个整数,表示每头牛的编号。

输出

一行一个整数,表示赛事的最大总分值。

不难想到这题用最大生成树来写。

首先构造一个完全图,编号为x1的点(牛)到编号为x2的点的边权为 x1 xor x2。

显然最终的图是一棵树。

因为要求的是最大值,那么就是求最大生成树。

var i,j,n,tot:longint;
    ans:int64;
    num:array[0..2006] of int64;
    father:array[0..2006] of longint;
    u,v:array[0..4000000] of longint;
    cost:array[0..4000000] of int64;
function getfather(k:longint):longint;
begin
if father[k]=k then exit(k);
father[k]:=getfather(father[k]);
getfather:=father[k];
end;

procedure kruskal;
var i,t1,t2:longint;
begin
for i:=1 to tot do
 begin
  t1:=getfather(u[i]);
  t2:=getfather(v[i]);
  if t1<>t2 then
   begin
    father[t1]:=t2;
    ans:=ans+cost[i];
   end;
 end;
end;

procedure qsort(a,b:longint);
var i,j,x,temp:longint;
begin
i:=a;
j:=b;
x:=cost[(i+j) div 2];
repeat
 while cost[i]>x do inc(i);
 while cost[j]<x do dec(j);
 if i<=j then
  begin
   temp:=u[i]; u[i]:=u[j]; u[j]:=temp;
   temp:=v[i]; v[i]:=v[j]; v[j]:=temp;
   temp:=cost[i]; cost[i]:=cost[j]; cost[j]:=temp;
   inc(i);
   dec(j);
  end;
until i>j;
if i<b then qsort(i,b);
if a<j then qsort(a,j);
end;

begin
//assign(input,‘superbull.in‘);
//assign(output,‘superbull.out‘);
//reset(input);
//rewrite(output);
readln(n);
for i:=1 to n do father[i]:=i;
for i:=1 to n do readln(num[i]);
for i:=1 to n do
 for j:=1 to n do
  if i<>j then
   begin
    inc(tot);
    u[tot]:=i;
    v[tot]:=j;
    cost[tot]:=num[i] xor num[j];
   end;
qsort(1,tot);
ans:=0;
kruskal;
writeln(ans);
//close(input);
//close(output);
end.
时间: 2024-11-02 04:35:59

【USACO2015feb】超牛(silver T2)的相关文章

新年最新的100句超牛的语言(转)

1.二农戏猪 2.干掉鸟人我就是天使! 3.帅有个屁用!到头来还不是被卒吃掉! 4.好好活着,因为我们会死很久!!! 5.有没有听过“大猪说有,小猪说没有”的故事? 6.女友问我她死了我会怎样我坚定的说:我不会独活(再找一个活)她大悦~! 7.人工智能和天然愚蠢无法相提并论——因为我们主张纯天然. 8.在教堂听讲经的时候我们应该保持肃静,打扰别人睡觉是很不礼貌的. 9.陪聊,提供夜间上门服务.(一个墓志铭) 10.人又不聪明,还学人家秃顶!! 11.你是电,李四光,你是唯一的神话… 12.笨人的

[超牛]只能输入数字的文本框,兼容IE7IE8等

demo地址: 只能输入数字的文本框 核心js代码: /* * 只能输入正整数,不能有小数点 * */ onlyIntegerKeyUp = function (e) { if (e === undefined) { e = window.event; } var obj = e.srcElement ? e.srcElement : e.target; var pattern = /[^\d]/ig; var val = obj.value; if (pattern.test(val)) {

超牛的VS菜单

所有菜单都重复了,Google到了解决办法:devenv /resetuserdata 但好不容易装好额ReSharper又不见了

超级牛的网站同步工具软件—端端Clouduolc

 端端Clouduolc实时文件同步,不通过云缓存进行双向同步,通道加密,实时性强,是目前最好用.最安全的p2p同步软件,对于广大站长来说,用于网站的更新是再合适不过了. 将PC电脑上的HTML.PHP等文件同步到服务器上: 端端Clouduolc在替换文件之前,对同步到服务器上的文件做hash校验,确保对端接收到的文件与源文件一致,然后瞬时替换,干净利落,有保障. 而且,服务器端文件的同步状态在本地PC端就可以清清楚楚看到,情况完全掌握. 子目录结构复杂,小文件数量巨大,端端Clouduo

USACO翻译:USACO 2014 MARCH Silver三题

USACO 2014 MARCH 一.题目概览 中文题目名称 农田灌溉 懒牛 牛叫 英文题目名称 irrigation lazy mooomoo 可执行文件名 irrigation lazy mooomoo 输入文件名 irrigation.in lazy.in mooomoo.in 输出文件名 irrigation.out lazy.out mooomoo.out 每个测试点时限 1秒 1秒 1秒 测试点数目 10 10 10 每个测试点分值 10 10 10 比较方式 全文比较 全文比较 全

css3的transform造成z-index无效, 附我的牛逼解法。

我想锁表头及锁定列.昨天新找的方法是用css3的transform,这个应该在IE9以上都可以的. 只锁头效果很好,IE11下会小抖,但chrome下很稳定停在那里.后来又加上锁定列,发现列会盖住表头. 百度到这里<小心 CSS3 Transform 引起的 z-index "失效"> "CSS3 Transform create new stacking context" 这个道理想想也明白,Transform 就是一个影子,假像,所以它不考虑z-in

5分钟破解wpa2密码(转)

首先大家要明白一种数学运算,它叫做哈希算法(hash),这是一种不可逆运算,你不能通过运算结果来求解出原来的未知数是多少,有时我们还需要不同的未知数通过该算法计算后得到的结果不能相同,即你不太可能找到两个不同的值通过哈希得到同一个结果.哈希是一类算法的统称,通常哈希算法都是公开的,比如MD5,SHA-1等等.我们平时说的WPA密码其实叫PSK(pre-shared key),长度一般是8-63字节,它加上ssid通过一定的算法可以得到PMK(pairwise master key).PMK=SH

前端交互开发微体验--总结了一些国内外炫酷的网站

前端交互开发微体验 关于首屏灵动小效果,微交互提升页面生机: 一.关于首屏视频播放 http://designmodo.com/startup/ 感官体验:科技感,高大上,酷 综合评价:如页面请求不多且视频占空小的情况下使用.一般为首屏轮播图的情况下使用,前两张轮播为图片,最后为视频,多给视频一些加载时间.还有就是非首屏使用. 推荐指数:★★★☆☆     二.Hover时实现图片随着鼠标方向而变动 http://atieva.com/ https://labs.invisionapp.com/

CSS float浮动的深入研究、详解及拓展(一)

概念目录 个人感悟之CSS代码的情感化思维 个人观点之浮动的意义仅仅是文字环绕显示而已 个人观点之浮动的本质是"包裹及破坏" 个人观点之目前大多数浮动应用都不是浮动应该做的 个人观点之浮动其实是个魔鬼.混球 一.引言 你我看待事物的方式不同,价值取向也不同,因为我们有着不同的世界观,价值观.这种世界观的差异不仅仅体现在实际的生活中,也反映在代码上.你我看待代码的方式,或者说是代码在我们情感层面的位置是不一样的,我这里说的是情感层面,与逻辑无关,与算法无关(虽然算法受情感影响).这种看待