ch_g

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

2011大连regional比赛总结

Posted on 2011-09-26 12:26  ch_g  阅读(370)  评论(2编辑  收藏  举报

    作为旅游队去大连还是很有价值的,暴露出了我们的一些问题。

standing:http://www.zlinkin.com/icpc2011/dlut_onsite.php

  比赛流程:

    比赛刚开始,我调环境,林鹏和顾泽天读题。调完,我从中间挑了一题读。随后林鹏和我说了G题的题意,很明显的AC自动机,不过题目中没有说明每个基因串的长度。问裁判,得到的回答是让我们自己读题。由于暂时没有其他可敲题,我就先上机敲这题。刚敲完,裁判就广播了G题每个基因串的长度不超过20,这样复杂度就没有问题了。我把原来写上去的一些优化去掉后运行。没有出Sample,发现没有初始化,改正后依然没出Sample,又发现忘记建Fail指针,改正后提交。这个时候已经是第40分钟了(这只是我梦游的开始)。

    顾泽天上机敲D,我下来看其他题目。不一会儿返回WA,我改正了一个脑残的continue后又提交,依然是WA。看了两遍代码,感觉没有问题,就让林鹏检查我的代码。林鹏和我说了B题的题意并说了思路。在第83分钟AC了D题后,我就上去敲B,敲完后没出Sample,打印代码下来检查,林鹏上机敲I题。改正了一些脑残错误后出了Sample,在第144分钟的时候提交,返回WA。(这时候我手上敲的两题都卡住了,这也直接导致了我们最后没机会出6题)

    接下来40分钟,我就一直在检B题,陆陆续续改正了一些小问题,不过提交后依旧是WA。在大概180分钟的时候,林鹏让我先敲F题,他来帮我检查我出错的两道题。其实这时候F题我们的思路是维护200棵线段树,时间复杂度是Q*N*logM达到了10^8,而空间复杂度是N*M*8达到了8*10^7。都是很极限的规模,我十分担心会TLE或者MLE。但是林鹏坚持让我上,于是我上机敲F,在第190分钟的时候林鹏指出了我B题用multiset<int>来维护区间会有问题,于是改成set<pair<int,int> >来维护,提交后返回了令人兴奋的AC(不过这个AC来得如此之迟,主要是由于我的能力不足)。

    接下来,林鹏在我敲F题的间隙,测了很多G题的case,大概在215分钟的时候找到了一组错误case。于是我开始检查G题,输出了建立的Fail指针,发现Fail指针建立有问题。回头再检查makefail函数,发现我队列的插入的一个地方忘记写“++”了,之前检查了两遍模板居然都没有发现(上次的复旦省赛也有这个问题),下次要多注意,要更加仔细一点。改正后终于在232分钟的时候AC(本该在第一个小时就AC的题目居然到现在才AC,我的问题很严重),改正后我接着敲F,敲完依旧没出Sample,输出调试,检查了一会儿才发现我的pushdown函数有一句写错了。改正后提交,返回WA,不是TLE或MLE,我们依旧抱有希望,林鹏很敏锐的让我检查菱形有没有问题,果然是菱形的处理出了错误,改正后在289分中的时候返回了YES。不过我们已经没有时间去攻那道被板刷的E题了。

    赛后的解题报告中说F题正解是逆序着色,然后用并查集来维护,本来是想卡线段树的,不过后来放宽了时限,就让一些线段树算法的代码过了(当然也包括我们)。最后5题垫底的成绩还是比较真实的反应了我们的水平,平时训练中的问题在比赛中依旧暴露无遗。

    正如林鹏所说,比赛的时候基本会暴露出所有平时训练中的问题,我的代码能力还有待加强,一些细节都不太注意,接下来一个多月主要纠正这方面的问题