您的位置: 首页 >商业 >

Facebook的Hacker Cup吸引了全球速度编程精英

2019-09-21 16:49:51 编辑: 来源:
导读 过去一周充满了重大新闻,这在一定程度上要归功于在奥斯丁举行的South By Southwest Interactive会议。朱莉·奥德尔在那里采访推动者和

过去一周充满了重大新闻,这在一定程度上要归功于在奥斯丁举行的South By Southwest Interactive会议。朱莉·奥德尔在那里采访推动者和振动器,所以执行编辑迪伦Tweney填写为VBWeekly的主机。一月份,来自世界各地的6,000多名充满希望的人参加了Facebook的编程挑战赛 “ 黑客杯”。三个月后,今天只有25位决赛入围者在Facebook新的Menlo Park校园进行了为时三小时的争夺战。

优胜者的名字(所有25名决赛入围者都是男性)刻在50磅的奖杯上,奖杯是带有像素化外观的二维黄铜拳头,作品“ HACK”被烫平,放在一个立方体的顶部。具体,

更新:经过三个小时的比赛,Facebook宣布了2012年黑客杯的获奖者:

第一名:俄罗斯的罗曼·安德列夫(Roman Andreev)在1小时4分钟内正确完成了一个问题

第二名:来自美国的Tomek Czajka,在1小时5分钟内正确完成了一个问题

第三名:来自中国的天成楼,在1小时44分钟内正确完成了一个问题

一等奖获得者将获得5,000美元的奖金,但大部分奖励将是被公开任命为世界顶级编码员之一的荣耀。另外,当然,与众多世界一流的程序员抗衡确实令人振奋。

Facebook的软件工程师,活动组织者之一戴维·阿尔维斯(David Alves)表示:“之所以来到这里,是因为他们热衷于参与这些事情。”

除了一个人以外,其他人都来自海外。进入决赛的国家/地区包括俄罗斯,德国,乌克兰,波兰,中国,韩国,台湾,日本和美国。经过连续三轮更具挑战性的资格赛后,这25名决赛选手在这里花费了Facebook几天的时间参观,打保龄球和三个小时的编码。

Facebook的Hacker Cup并不是唯一的此类编码竞赛。这里的许多编码人员还参加TopCoder竞赛,Google Code Jam竞赛以及本国的编码竞赛。这就是Alves推测某些地区(例如东欧和亚洲)产生了更成功的代码竞赛者的原因之一:他们更习惯于此类竞赛。另外,他补充说,他们的国家拥有出色的科学和数学教育。

骇客杯的工作方式是这样的:每个编码人员都会遇到三个困难的编程问题,需要三个小时才能解决。在第一轮中,问题很容易:例如,找出可用于给定大小和指定文本的符号的最大大小字体。当挑战者进入最后一轮比赛时,问题变得棘手。(有关去年竞赛的示例问题,请参见下文。)阿尔维斯(Alves)预计只有一个或两个参赛者才能完成这三个问题,而只有大约一半的人甚至可以完成一个问题。这就是去年Facebook第一台Hacker的结果杯赛。

Alves说,尽管70%的人选择C ++,但参赛者可以使用他们想要的任何编程语言和开发环境。(少数使用Java,一两个使用C#。)完成程序后,参赛者可以对其进行测试,然后将其提交给裁判。该程序有六分钟的运行时间,如果产生正确的结果,则通过。

评委根据程序产生的结果的准确性来确定获胜者,然后由编码人员提出解决方案的速度决定。

这是一个挑战,它测试了所有参赛者的计算机科学技能,但是还需要一定水平的直觉和开箱即用的思维。

阿尔维斯说:“通常,解决问题的直接方法远远不够快。”

从物理上讲,“黑客杯”没什么好看的:一群年轻人紧紧盯着他们超大的显示器,连续三个小时。房间是如此安静,以至于我相机的快门的咔嗒声是最大的声音。一个小时后,墙上显示的骇客杯网页显示三名选手分别完成了一个问题。该消息的沉默掩盖了潜在的强度。

尽管参赛者确实可以访问Internet,并且可以在Wikipedia上进行查找,但他们不应该与外部的任何人合作或交流。但是Alves不太担心有人外包他们的问题集。

“他们将外包给谁?”阿尔维斯说。“这个房间里的人最有资格解决这些问题。”

样本问题

想知道参加骇客杯的感觉如何?从去年的比赛来看这个问题。请记住,这只是三个问题之一,您只需三个小时即可创建一个解决所有三个问题的程序。

聚会时间

您正在为朋友举办聚会,但是由于您的朋友可能并不互相认识,因此您担心其中一些人可能不会喜欢您的聚会。因此,为避免这种情况,您决定同时邀请朋友中的一些朋友。但是,您应该邀请谁参加一次盛大的聚会呢?

幸运的是,您拥有有关您的朋友及其朋友的所有友谊的数据。在图论术语中,您有社交图的子集G,其顶点与您的朋友和他们的朋友(不包括您自己)相对应,并且该图中的边表示相互友谊。此外,您已经成功地获得了对G中每个人在聚会期间将消耗多少食物的准确估计。

您要从G中选择一组来宾。这组来宾应包括您的所有朋友,并且由来宾形成的G的子图必须已连接。您相信这将确保您的所有朋友都能享受您的聚会,因为他们中的任何两个都会有话要说...

为了省钱,您想挑选一组客人,以使所需的食物总量尽可能少。如果有多种方法可以这样做,那么您最好选择一种来宾最少的方法。

社交图的子集G中的人/顶点的编号从0到N –1。为方便起见,您的朋友编号从0到F – 1,其中F是您要邀请的朋友的数量。您也可以假设已连接G。再次注意,您本人并不代表G。

输入输入

的第一行包含一个数字T,即测试用例的数量。每个测试用例都从包含三个整数的行开始,即N,即G,F中的节点数,朋友数,以及M,即G中的边沿数三个整数。随后是M行,每行均包含两个整数。这些行的第i行将包含两个不同的整数u和v,这表示人u与人v之间的相互友谊。此后是包含N个以空格分隔的整数的单行,第i行代表人i所食用的食物量。

输出

输出T线,每个测试用例的答案单独在一条线上。每行应包含两个数字,第一个是满足给定标准的聚会上所消耗的最小食物总量,第二个是您可以在该聚会上拥有的最小人数。


免责声明:本文由用户上传,如有侵权请联系删除!

2016-2022 All Rights Reserved.平安财经网.复制必究 联系QQ280 715 8082   备案号:闽ICP备19027007号-6

本站除标明“本站原创”外所有信息均转载自互联网 版权归原作者所有。