ch_g

ECUST_ACMer —— ch_g
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2011复旦邀请赛总结

Posted on 2011-05-17 11:30  ch_g  阅读(618)  评论(3编辑  收藏  举报

复旦邀请赛总结
这次比赛见到了OpenLegend的dumbear大牛和浙大的ArcOfDream队,表示和大牛还有很大的差距。dumbear就做我们旁边。热身赛的时候居然没有发现。貌似他这次参赛是来带两个新队员的。


比赛前一天因为旅馆搞错折腾了大半天。晚上看胡伯涛的网络流论文又看到12点,比赛后来也没有出网络流的题目。感觉比赛前的一天没有休息好。


第二天比赛,离比赛开始只有10分钟不到的时候才进的场地。整场比赛感觉自己都如同梦游,脑子转的很慢。先来看看这次的题目。


A题:递推/中国剩余定理。

我们在171分钟的时候才过,这题递推方法没有想到,用的是中国剩余定理。由于我在卡D题,而且这题用中国剩余定理的话还要用java高精度,而我们队其实对java用得并不熟练。所以导致此题过得很慢。


B题:模拟。

我们在200分钟出了3题后就一直在调试此题。整整100分钟的时间没有敲过其他题目。赛后才发现是一个很不起眼的地方发生了数组越界。代码能力一直就是我们队的弱点阿。说实话,我和硕强的代码能力都不强。虽然这题是硕强敲的,不过我赛后再敲的时候,仍然调试了一会儿。


C题:整数集合转化成拓扑结构/析取范式

这题我们比赛的时候没有想过,也是我们不会的题目。现在仍然没有想出解决方法。不过看了其他大牛的blog发现方法好像是用整数集合转化成拓扑结构或者析取范式来解。


D题:暴力/KMP/后缀数组

这题是我做的,也是我们本场比赛最失败的一题。这题被板刷,可以直接用暴力,也可以KMP,但是我偏偏去想最烦的后缀数组,而且其中一个“++i”错敲成了“++len”,检查了两三遍代码,居然都没有发现,最后还是和暴力程序对拍,找到一个错误数据后通过单步才发现的。发先这个错误后,由于我的一些地方不注意,导致TLE了两次,最后还是加了一个小优化才在199分钟的时候5Y。这题暴力复杂度O(n^2)~O(n^3),KMP复杂度O(n^2),后缀数组复杂度O(nlogn)~O(n^2)。


E题:数学(概率)

我们这次比赛的另一个重大失误就是没有去想这道题目,其实这题个人感觉应该是我们队的强项。赛前刚和顾泽天一起研究过有关概率的一些东西。赛后理解题意后30分钟内过掉了。这题一开始没有去想是因为过得人不多,后面因为卡题就直接把这题无视了。


F题:模拟

这题应该算是这次所有题目中最麻烦的题目,题目有用了7页纸讲了四川麻将的规则,然后输入数据是当前手上的牌,要求在摸到一张牌就胜的所有情况,并输出得分。其实我们OJ上有一道判梭哈牌的大小的题目,和此题很类似。不过这种题目只能放到最后敲。但对于我们这种代码能力不够强的队伍只能直接放弃。


G题:简单题

这题一上来就被板刷,是一道简单题,硕强读完题直接敲,17分钟时1A。


H题:计算几何(梯形剖分)

这题是本次比赛的难题之一,我们比赛时也没有去想这题。


I题:图论

这题被我们队直接无视了,比赛的时候是顾泽天读的题目,由于我和硕强各自都在卡题,他就没和我们说这题,赛后一说题目,硕强立即惊呼,此题她POJ上做过类似题目。不过,比赛的时候也未必有十足的把握能出此题。


J题:DP

这题没有出,我有很大的责任。一开始,顾泽天和我说了题目后,我就想到了一个O(n^2)的DP,不过没有想清楚,上机敲了一半感觉有问题,然后又换题目。等到200分钟过掉D题之后,我重新想这题,感觉当时思路不是很清晰,而且题目规模是1000,算端点的话有2000,但是有200个case,一算2000^2*200达到了8*10^8,果断就虚了。硕强和顾泽天在搞B题的时候,我就写这题的伪代码,打算等他们过了B,我就试试O(n^2)的复杂度。结果就一直悲剧到最后。

这场比赛的ABDEGJ其实都是我们队能力范围之内的题目,但是实力不济加上发挥不佳导致最后就只出了3题。怎么说呢,看过其他牛队的一些总结,其实他们在比赛的时候有时也会各种卡题,各种发挥不佳,不过人家能够跌跌撞撞最后把能力范围内的题目都出掉,但我们却一卡就卡死,这也就是我们不如人家的地方之一。这也是ACM的一个重要能力。

这次比赛对自己的打击蛮大的,本来信心满满,但是最后却是这样的结果。如果还是这样的状态的话,下半年恐怕就连FINAL的边都沾不到了。接下来要做的有两点,其一把自己还不会的算法都要扫一边,其二多切题目提高自己的代码能力。


给ECUST其他ACMer的一些建议。

如果想搞好ACM就要努力切题,多学算法。基础算法遍地都是,网上书上都可以找到。进阶算法就要看国家队论文,以及大牛的blog。我知道的两个搞ACM仅一年就成为神牛,冲进FINAL的有航电的胡浩和武汉的韩帅。他们之所有进步如此神速,都有一个共同点,疯狂切题,疯狂学习。基本上一年内估计就有一两千的题量了。


说实话想在ACM上搞出好成绩,就是要天天泡机房,拼命做题、学习。基本上就没有双修日,五一、十一、寒假暑假都是提高自己、拉大和别人差距的最好时机。
寂寞了怎么办,切题切得无聊了怎么办,去网上看别的大牛的blog吧,看看人家是怎么学习的,看看自己和人家的差距。实在不行就找一个志同道合的朋友聊聊,聊理想、聊未来、聊自己还多么菜、聊别人还多么牛。然后就又有动力了。


还有就是平时要适度的做做比赛,南开OJ上有各种比赛的时间(http://acm.nankai.edu.cn/recent_contests.php),基本上两周一赛吧,一来检验自己的水平,二来可以用比赛来转换一下做题的感觉,因为平时做题和比赛做题是不一样的。有半年以上ACM基础(如果努力的话)、出去参加过比赛、基本算法都会了,建议可以去做做topcoder(http://www.topcoder.com/tc)和coderforces(http://codeforces.com/)。这里的比赛都很有意思,是锻炼思维和代码的很不错的平台,不过他们都是面向全世界的编程爱好者的,所以有很多时候,比赛的时间是北京时间的临晨12点,然后要比一两个小时的时间。