RSS
 

Challenge24 2010

28 二月

大概1个月前vls就来拉我一起做这个比赛了,不过这个比赛的注册、组队比较麻烦,注册后要上传个人资料以及CV,组队必须3人。只有3人的资料都OK后,才是合法的参赛队,不过其实不合法的队伍也可以参加在线赛,只是不能参加现场的final,不过这个其实无伤大雅,因为我们也没钱去参加Budapest的final的。

 比赛前几天,vls把Fire也拉来了,凑足了三人,我还向Fire求队名,然后被bs了,于是发现自己nc了,于是Fire-Winged Bird复出。

首先2月20日有一场测试赛,题目相对比较简单,主要为了熟悉系统。我一个人去做了,P题是个正常题,不说了。Q题是一个给出摩斯码音频文件,要求解码。我不知道如何才能用计算机搞定这个,于是10个输入文件我全部人肉翻译了,经过几次罚时还是全部通过了。R题是一个BT马拉松题,只能想到随机的方法,最后连随机都懒的随机了,交了个最naive的output上去,发现居然还是能骗倒不少分数的,其中有一个output还拿到了满分。

然后就是昨天的正式在线赛,晚上5点到10点,在218搞,watashi围观。三个人分别看题,看完后发现没有一个好搞的。A是要给N个房间从1开始编号,其中包含(1 3)子序列的号码都是不能用的,问这样的编号方法最终每个digit各要用到多少个。B是给定一个无向图,每个点可能属于某些组,要求保留原图中的一些边,使得最终是一颗生成树,且每个组的点各自构成一颗树。C是马拉松题,给定一个图片,然后要你在一个初始为灰色的画布上,用N个透明度50%,坐标、颜色自定的三角形叠加后,逼近给定的图片。D题是给定N行字符串,然后要把这N行字符串排序后的结果,通过交换操作恢复到原始状态,要求交换的次数尽量少,且所有的交换操作本身也必须是按照字典序从小到大的。E题经过我们3个人读题,没有一个人看懂的。F题又和声音有关,给定的wav文件中,包含3000、2000、1000HZ的波形,分别表示3进制中的2 1 0,然后数据是有3进制表示的,要求解码,且给定的wav文件可能存在一定的误差。G题是自定义了一套函数定义语言,然后给定这种语言下的一些函数定义,要求转化成限定通用寄存器个数的16位汇编语言。

A题感觉还是可以做一下的,于是直接扔给了Fire。D题一开始以为只要用置换群那样搞一下就可以了,然后我仔细读题后发现因为有相同的行的存在,直接的做法没法确定怎样的交换才能使得置换群个数尽量多。于是就扔了去搞我喜欢的F,而vls动了一下E无果后就去研究B了。Fire的A过了第一个数据后,剩下9个数据一起交,结果悲剧了,只有第二个通过了,剩下的全部WA,各扣了10分。于是他就去写程序对拍了。我用CoolEdit打开wav文件,想看看能不能把波形保存成jpg文件,以方便计算机处理。结果悲剧的发现没有,但是喜剧的发现可以按照18000HZ的采样率把波形文件保存为txt文件…18000HZ真是一个好频率,刚好是频率的整数倍。于是我写了第一个版本的程序,按照波形的升降规律来判断频率,很快通过了第一组数据。然后打开第二段音频的时候,发现波形换了不再是正弦波了。于是我依赖波形的第一个版本就没用了,vls提议查看周期和周期之间是否相似来确定频率,我觉得这个方法适用性会比较好,应该可以使用各种波形,于是改了后搞定了2和3(中间因为没有转linux格式而悲剧了几次)。当打开4的时候,发现bt的来了,同样频率的波,这个周期与下个周期的波形也可能有误差,而这种误差到后面的case中会越来越放大。于是我修改了程序,增加了容错,陆陆续续搞定到8,最后发现9和10完全搞不定了,于是扔了转去看别的题。

 Fire的A题经过长时间的对拍后发现了错误,又经过修改终于全部都过了,这也是本场比赛我们真正AC的唯一一个题。vls的B yy了一个算法,陆陆续续通过了5个case,然后后面的case发现出问题了,最终也没有搞定。我去人肉G题编译器,人肉了一个获得80分后,第二个因为有跳转语句,且寄存器数量限制非常bug,也跟着放弃了。最后的时间是我和Fire一起搞C题三角形逼近。Fire尝试用所有颜色的平均值去覆盖整个图片,而我人肉了最简单的第一个case后,交了一个什么三角形都不画的灰色图上去先骗点分数。然后我发现C题的judge出问题了,满屏了ERR,问了下admin说是C题的judge机器负载过重。比赛前不到5分钟,Fire终于搞定了他的程序,于是覆盖了我的output。

赛后神奇的发现,依靠Fire最后的成功一水在C题上骗到了大约300多分的样子,一举冲上第七的位置,果然是水水更健康啊……比赛还是比较好玩的,今天一早起床发现看不了每个题目的分数了,只能看到最终的成绩。邮箱收到了邀请去参加final的邮件,因为我们肯定不会去了,于是我干脆直接点了refuse拒绝了,把坑留给别人吧,不知道以后的某一年,会不会真的去现场玩一下呢,谁知道,先期待明年这个时候还能来玩在线赛吧。

附官网上的一图,官方配的文字是:

 Dear Contestants!

 In our cluster the ‘C’ eval server booted the whole environement from a liveCD. That was the source of all problem:

 
17 Comments

Posted by Hang Hang in 算法 446次浏览

 

Tags: , , , , , ,

Leave a Reply

 

 
  1. watashi

    2010/02/28 at 3:56 下午

    ym FWB
    现场围观的飘过

    [回复]

    Hang Hang 回复:

    仰慕以一围三的学长……

    [回复]

     
  2. 3xian

    2010/02/28 at 4:39 下午

    真是笑傲各种比赛….

    [回复]

     
  3. 3xian

    2010/02/28 at 4:40 下午

    请问怎么登陆师傅博客- -

    [回复]

    3xian 回复:

    好我成功找到那俩字了

    [回复]

    Hang Hang 回复:

    仰慕师父,我是尽显乱搞本色……

    [回复]

     
  4. yayamao

    2010/03/01 at 1:06 下午

    这么好玩的比赛怎么都不通知我下
    -_-

    [回复]

    Hang Hang 回复:

    在群里吼过- -额。。貌似您不在群里。。明年继续吧。。

    [回复]

     
  5. VegetableB

    2010/03/02 at 8:13 上午

    感觉我老了……

    [回复]

    Hang Hang 回复:

    仰慕踏实的vls,也就你能做B了,我只会乱搞- -

    [回复]

    VegetableB 回复:

    呃,B的做法其实也不靠谱的……
    虽然修复最后发现那个bug之后算法应该是对的,但是复杂度是没什么保证的
    有bug那个版本跑最后一组要花上几分钟,改完之后估计更慢……

    [回复]

    Hang Hang 回复:

    这样说来已经相当靠谱了- -

    [回复]

    VegetableB 回复:

    可惜不能去final玩……

    [回复]

    Hang Hang 回复:

    等有钱了去玩吧- -

    [回复]

     
  6. vivyli

    2010/03/02 at 7:06 下午

    花现hhgg的博客,订阅了:-)

    [回复]

    Hang Hang 回复:

    ^^不是猴子头像了,柯南,继续捏~~

    [回复]

    VegetableB 回复:

    要订阅应该学我,把评论也订阅了……

    [回复]

     
 
FireStats icon 由FireStats提供支持