Wiki_ki

导航

GCJ2012总结

    作为一名酱油,我的下学期依旧准备酱油完就结束的,某一天在yk大神的状态里看到了这个比赛的报名,然后就在接近一年不做题目的情况下鬼使神差的报名了。事实证明,果然是纯粹找虐。

    Qualification Round:两天不限时做,前三题都是水题,第四题是对于我而言的不可做题,由于这个时间蛮好的,好像是周六上午8:00或9:00开始的,我大概是比赛开始1h左右开始做的,由于资格赛比较水,所以没有找人组队(后面的话基本都是让罗学长做翻译),不过英语死烂死烂的我还是非常痛苦的看了很长时间才搞懂前三题的意思,A题是个密码转换的问题,水题,不过各个字母对应哪个字母要自己看样例找出来。B题一开始一直看不懂题目意思,然后就直接转攻C题,C题的意思比较明朗,就是说让你找一个范围内,可以通过移动操作来实现数与数之间转换的对数,数据范围不是很大,所以我就直接搜索了,复杂度大概就是O(N).B题又看了很久,终于明白了题目的意思,大概是说google里面有个比赛,会打分数,分数都是0-10,然后每个人是得到三个分数,而且保证这三个分数极差不会超过2,然后就是说极差等于2的称作surprise给分,现在对于每组数据,他会给你参加比赛的人数,surprise给分的人数,以及p,然后让你求最多有多少个人的最高分>=p,正确做法好像是贪心,因为分差最大是2,所以拆法很少,给出他surprise的分法和非surprise的分法,然后贪心求解,我当时是怕贪心错,所以是写了个O(NS)的动规,其实方法上也是大同小异。D题当时看到题目就懵了,好长好长,题目都看不懂,晚上罗艺网球比赛完了,我让他帮我看下D题,果然英语不是一个层次的,很快罗艺就知道是什么意思,但是细节部分也不是很明白,是一个类似光学的反射题目,我觉得算法跟组合数学,还有几何搭边,本来想混混看能不能把小数据过了,但是由于有个样例没看懂怎么得到答案的,这题果断放弃。反正20分就晋级了,当时小数据就过了35了,也不虚了。最后测下来是60,rank 851,主要我可能做的比较早,果然早睡早起好啊。

    Round 1A:2h总共三题,一二两题都可以瞬做的,但是那天比赛一点都没有状态,最后萎了,第三题比赛时看版我就果断放弃了,小数据最后只有65个人过了,大数据更少了,A题是个模拟题,当时我真是脑抽了脑抽了,首先题目比上次长了,而且还是没有人帮我翻译题目T-T,自己看题目什么的最痛苦了,不过这次我是把前两道题目都翻译完,然后B题我看到数据N<=1000,T<=100,本能的觉得是N^2的动规,也没多想,先放了,看A题,A题是个很水的模拟计算概率的问题,就是说你已经打了A个字母了,其中有可能打错了,现在你有几种修改方案,直接换行,退一个,退两格等等,现在你要做的是算出你将这篇文章打完所打字数的期望值,可能是因为看到有很多很多人Ac了,心情很着急,于是直接按照它上面的模拟步骤无脑的写起来(2^A,大数据显然超时的程序),而且越写越烦,尽管只有80行左右,但是写的很没有逻辑,没有想清楚就直接写写改改果然是很坏的习惯,1:08时Ac了小数据,这时我突然觉得不对啊,看看了程序,很多个概率是相同的,瞬间就变成了O(A)的算法了,于是我花了15min14s改完了程序,提交了大数据,当然最后因为我是直接在程序里改的,所以有一个地方,我是先将所有的概率乘完,再一个个除得到当前需要的概率,对于实型,造成了误差,最后大数据也没过,但是我事后稍加改动就Ac了,如果当时直接写,我是不可能非常无聊的先乘起来,在除的,这完全是多做了一个操作,但是当时是直接在程序上改的,而且,我对拍了小数据是过的。B题是我们日常的问题,是说你打游戏,对于每个关卡有两个level,直接过level 2可以得到2能量,现在给出每个关卡每个level的开锁所需的最少能量,让你计算最少要打几盘才能将所有游戏的关卡level 2玩完。本来我是以为是动规的,但是后来仔细看题,每个关卡之前没有顺序,这样就不满足无后效性,后来觉得是贪心,尽管自己想出了一个贪心(对的),但是我一直没有敢写(对于贪心的正确性一直把握不好),甚至还在想跟图论有关系吗?到了还有30min左右就结束时觉得还是写一下吧,2h18min 1wa,2h21min 2wa,wa了两次后改完最后一次看表还有3min就结束了,而且当时已经没有希望进前1000了,所以就没交,出去吃饭了,回来尝试着交了一下,惊奇的发现过了。实在太囧了。最后只有A的小数据10分,非常惨的rank 3000+。

    Round 1B:这场的情况大致跟后来的round 2一样,A题一直在卡,首先仍然是英语关,A题我大概扫了一下题目,题目意思果断没很懂时果断看样例觉得好像是求了gcd,和lcm之后分配的,,其实样例第四组不是的,但是那个无法直接看出答案,等我写完后样例一测不对啊,果然猜错题目意思了,后来仔细看题目,懂了,原来题目意思是说N个参加比赛,现在每个人有个比分,然后,他的最终得分为目前评委给的这个分数加上观众投他票的百分比*(所有人评委给分的总和),让你求最少的百分比使得你不是倒数第一名,这次李一同陪我一块看了,他看了之后果断说二分答案吧,但是我不是很赞成这个方法,后来我说,直接计算,假设你是得a分,总分为w,共N-1个人,那么极限的情况就是a+w*x=2w/N,然后就可以直接求得x,但是这个方法尽管样例可以过,但是在提交小数据时答案中含有负值,此时是58min,李一同说C题的小数据很简单,让我速写,并告诉我题目的意思。B题当时我又一次列为不可做题,其实C-large才是真正不可做。1h19min,C-samll Ac,我没想到这是我最后的Ac了,我错误的放弃了我原来A的猜想,开始了1h的没有任何意义的思考,最后,比赛不到15min结束了,我开始随便乱改改提交,提交两次均wa后,也凌晨两点多了,我洗洗睡了,事后看了凯神的程序,发现原来一开始要先排序,然后将前面一些很小的即由a+w*x=2w/N式子计算出来为负值的修正为0(当时真傻了,负值其实就是说明没有可能不被淘汰),最后是rank 2000+,再次给跪。

    Round 1C:这场再跪就真洗洗睡了,一上来看A,是个图论的题目,我觉得可以直接套用Floyed,18min时A-small Ac,直接交了A-large。那天请罗艺当的翻译,看到B题做出的人很少,我又一次将其定义为不可做题,后来听董神说小数据还是可做的。直接看C,大致是个流水线分物品的题目,我觉得蛮符合动规的条件的(我是多么爱动规啊,之前很多题目一眼看了都是往动规想),后来看详解确实是个动规,n4的动规,但是我老实说当时我确实不会,我的状态设计不好,大数据数组都开不了,由于那天A交的比较早,排名一直在前1000,想了很久,又跟李一同讨论了很久,大概1h30min的时候我说排名一直降,降了很久,期间罗艺提出了一个诡异的算法,基于二分,但是我觉得太诡异了,而且比较难写,最后我还是没敢写,我果断说你继续想想吧,我先写搜索了,大概15min左右,1h47min 1wa,很快发现是有个地方没有用__int64,1h50minAc了,然后就是无聊的所谓想最后一题的大数据,因为实在没有心情看B了,期间学长一直坚信他的方法,甚至掏出了他封印已久的键盘开始写了,但是我们边聊边想,边玩,到最后还是没有写出来,呵呵,李一同貌似已经开始写动规了,但是我没有等到那个时刻,在还有10min就结束时(本来想卡到8min)我开始运行C-large,用哪个傻×的搜索,果断Time Expired。最后测试结果40分,rank 658。

    Round 2:这场只写了1h30min我就缴械了,本来A题是个很简单的动规,题目大概看明白的时候,而且很好写,但是学长今天太激动了,或许我当时想跟Round 1C时一样,快速A一题,这样可以保证排名,而且对心态有很大的帮助,round 1C做的时候很轻松,一点也不慌,基本没有失误。总之A题我们一次又一次的理解错题目意思,那个藤蔓的长度到底是多少,到底是什么意思,我们尝试了三四种理解方式,均以失败告终,有的是样例都不过,还有三个程序时样例过了,提交上去就是wa,1h30min最后一次wa完后,我决定不做了,0分就0分吧,李一同告诉了我二三题的意思,但我当时也没心情听,不过看了第三题的图之后我觉得有点像lrj黑书上的有道题目,事后问了凯神,貌似不是的,第二题题目意思我大概知道了,大体的思路我觉得就是先从大到小排好序,然后把大的往边上放,具体做时我觉得可以dfs来放,当然放时肯定是尽可能多利用空间,最好就是然后有解直接跳,没解可以卡一下节点什么的,这是我的大体思路,不知道对不对,还没有写,不过后来听凯神说这题不是水题,我也不清楚能不能行,以后做一下吧,当时我就直接不做了,改成了watch状态,一同也跟我说,算了早点睡吧。对啊,洗洗睡吧。另外膜拜yk大神rank 37,董神和凯神顺利晋级,凯神的压线操作太飘逸了(换成dota的说法)

    P.S:突然觉得好伤感,昨天晚上做的时候我没想一定要过,一定要拿t-shirt,我当时只是想把A题给过了。(突然觉得这句话很像某个言情剧里的什么话,比如诛仙里的“就算全天下的珍宝都放在我的眼前,也比不上你为我擦拭竹子的这只袖子”,吼吼,尽管官方碧瑶貌似小悲剧了,诛仙二还是要追的。

posted on 2012-07-12 22:41  Wiki_ki  阅读(145)  评论(0编辑  收藏  举报