2010年5月16日,多云转晴,国防科技大学三号院,ACM/ICPC华中南地区邀请赛……

  这应该算我参加的第一个正式的比赛,第一个组队赛,然而从开赛前就频频出现的各种杯具可以看出,今天注定是要悲剧了……整理好一切坐到座位上,第一感觉竟然是想睡觉……好不容易清醒过来,好不容易凑齐了三个人,终于在88支队伍的倒数声中开始了一段杯具……

  一拿到题,ldc就说C题他做过,三个矩形求并后求面积,果断上去敲,wtf看A题,我看B题。B题乍一看像个矩形求并后的周长,但又觉得有些不对,于是果断放弃B(事实证明,这是绝对正确的选择,B题是整场最难的两题之一,另一个是D题,全场没人出……),D题一看就是二维DP,不会,直接略过,E题的意思就是把一串尖括号中"><"的情况对换成"<>",直到不可以继续对换,求最小对换次数。这时C题敲完,果断地AC了,我跟ldc说了一下B和E的情况,他B我E。题目还没拿起来wtf就说A题是大水题,于是我们俩换了一下,我上去敲A,果然很水,map+string也果断AC了。

  到这里为止,一切都还顺利。我抽空看了一下rank,我们还算出得比较快的,最快的是武大的一个队,出了A、C、E,我们还排进了前十,顿时感觉大有希望。跟wtf说了一下,她没什么思路,我继续E,她去看F。杯具就此开始……

  我看了一会儿突然想到,如果把>换成1,<换成0,那么就是把序列的所有0移到左边,1移到右边,再仔细一看,发现这就是一个逆序数!于是跟他们俩商量了一下,都觉得可行,但是我们很悲剧地没写过二分逆序,而且没有找到模板,于是由wtf用树状数组来写,虽然有点大材小用,但毕竟树状数组有板子的。wtf说F题是求直线相交构成的三角形个数,我一看又是计算几何,顿时觉得没思路(这次比赛几何很多,包括前一天的热身……),就和ldc讨论B题,坚定了最初的想法,但他看了一下rank,没人出,而且有人WA了3次了,说不敲(还好没敲!)。这时,E题敲完了,由于题目中提到了有可能无解,我们就开始讨论这题无解的情况,突然整个房间一黑……居然很悲剧地停电了……现场一片混乱……

  无法继续敲代码,我们只有全部来研究这个“无解”,试了N组数据也没发现无解,于是猜测是否是忽悠人的,因为无论怎样对换,总是可以把0换到左边来,相应的,1就到右边去了。突然又来电了,主办方说只有E盘的数据不会还原,顿时现场怨声载道,大家都存C盘了……重新敲完后提交,终于,领到了今天的第一次WA,顿时我们就慌了,因为我们看到看到整个教室里已经有一半以上的队插了E题的气球……最悲剧的事发生了,我们竟然没有想是不是代码写错了,而是认为是有些情况没考虑到,于是ldc开始做数据,我跟wtf看G题。悲剧的大幕拉开了……

  G题相当于是一个二维平面上的矩形扩展,求最终的面积,我一看就觉得熟悉,跟很多年前我做的NOIP2006模拟赛时的一道题很像,那道题是直接FloodFill暴力出来的。然后一看数据规模,1000*1000的矩阵,预感会TLE,但记忆中的那道题也是这个规模,犹豫再三就开始和wtf讨论各种各样的扩展法,甚至扯到了矩形求并……最后没有结果,我们又开始讨论B,如此反复……这是今天的第二大悲剧……

  讨论无果,我翻过去看后面的题,H题又是树形DP,放弃(悲剧的是我回来后才发现我带去的一本书上有这题的弱化版……)……又看I,顿时感觉见到了光明,从任意k个点开始是否能遍历一个有向图,这不是个强连通分量吗……但看了数据结构觉得又好像不是,像是有向图的生成森林,(后来发现,是对书上的意思理解错了,悲剧啊……),顿时发现,没有这个的模板……wtf提出可以用并查集,最后统计树根结点,我觉得可行,就去敲,敲完发现连样例都没过!仔细看了一下,终于发现图是可以有环的,而并查集就失去了作用,于是又开始了纠结……

  这一段时间是整场比赛我们最痛苦的时间,两个题都没能出,周围的队伍气球最多已经插了5个了……不知道在浑浑噩噩中过了多久,ldc突然站起来说他重写E题,算法没变,只是改了一些细节,结果直接AC了,仔细一看,竟然是因为最后输出的结果已经超出了int型的范围,必须用__int64……我们悲愤地仰天长叹,这距我们第一次WA已经两个半小时了,我们在这一题卡了两个半小时!!!

  再次看了rank,大部分都有4题了,必须再尽快出题。于是我们决定全力G题,又是反复讨论,反复地没有结论,我提出直接暴力了,但其实我们都不敢……又是半天无果,ldc去看I,我和wtf看J,J是模拟一个数据库,然后响应各种增删查改命令,一看数据规模是10W,就想直接hash了,但一看Judge,数据改了,变成了100W,我说用map水一下,但仔细一看不仅是由键查值,还要反查和排序,map也没法用,wtf说用树状数组,但也有同样的问题……我们再次陷入卡题状态……

  终于,封榜了,只有最后一小时,ldc研究了半天觉得,管它是强连通分量还是生成森利,直接DFS!结果直接就AC了……顿时我们觉得是不是自己想得太复杂了,wtf之前还担心这题DFS会堆栈溢出,于是我们回头看G题,得出的结论是:就是用FloodFill暴力!只要加上防重入的判断,就能保证O(n*n)的复杂度,我们再也找不出别的理由不去试一试了,于是ldc敲了,但却又是一个WA,他就说让我来重写一个。我鬼使神差地先去看了一下他的代码,猛然发现他的边界条件错了!于是改了之后果断提交,竟然AC了(这里由于紧张,提交了两次,不过还好没影响)!我们顿时有一头撞死的想法……

  封榜前的rank上,已经有很多5题了,此时我们肯定是排在5题大军的靠后位置,至少也40+了,想拿个奖就只能再出一题。于是我们全力J,但始终没有什么好的思路,wtf提出可以用两个树状数组来解决反查的问题,ldc则说可以手写AVL,但这一切一切都没意义了,比赛到这里就结束了……

  Rank 43,这是最后的结果,奖只取到30,我们毫无悬念地悲剧了……而更悲剧的是,最终我们罚时775,如果E题那里没有卡住,E、G、I就都能提前至少两小时出,那样罚时只有395,同是5题,但最后会rank 27!!!E题卡住了我们,卡掉了我们的铜牌……

  说了整篇的悲剧,来说说教训吧!首先我们犯了一个很大的错误,WA了以后应该果断地换人查代码,而不是继续坐在那里做数据;其次,卡了半个小时就应该果断放弃E题,先出其他的,再回头看,说不定就一目了然了;再有,应该胆大一些,思路明确的题目应该勇敢地敲,更何况是在都差不多分析出复杂度的情况下。整场我们只交了7次,5AC,2WA,虽然正确率高,但时间拖得太久了,既然怕TLE,那早TLE跟晚TLE不是一回事,早TLE了还能断绝一些不正确的思路;最后,不要把问题想得太复杂,E、G、I都是如此,特别是E,后来的事实表明,E题甚至都不需要求逆序的O(nlogn)的算法,有仅有5行代码的O(n)算法!

  这次实在是太遗憾了,这可能是我大学期间唯一的一次华中南了,本来可以争到一块铜牌,却毫无悬念地挂了……只当一个超级大的教训吧……

  悲剧的不只我们,很多学校的大牛都不同程度的悲剧了,有被A题卡的,还有到最后A题都没出的,还有抓着B题不放的,最后几分钟交题却因为手抖交了份CE的,结果调到可以AC了比赛结束……不过坐在我们后面的浙江师大的到是RP够好,他们本来也是5题,最后5分钟出了J题(用的就是两个树状数组,我们再次悲剧……),结果有了银牌。

  另外特别要指出的是,我们再度延续了华中南的“优良”传统,所有的大学生被长郡、雅礼、师大附中(很无语……)狂虐,rank 1、2、3、5全是高中生,只有武大拼命地也是无悬念地代表大学生挤进前5……全场仅前3的高中生队出了8题……拿奖的30个队,高中生占8个,他们都是随便来一个就可以单挑一个队的,他们很多都是国家集训队的,他们有IOI金牌,他们很多都有NOI金银牌,他们都是神牛……

  还有是一些比赛之外的事情,被毫无悬念地虐了以后,我们参观了国防科大的本部,包括院史馆,天河超级计算机(只有个壳子)和银河Ⅰ、Ⅱ,以及他们的运动会开幕式彩排,以及火车横穿学校的“奇观”……

  晚上是颁奖晚宴,有少将级别的出席,我们和其他打酱油的一起,围观了颁奖,也再度为全体大学生被长郡雅礼踩而默哀……饭菜还不错,12人一桌,10菜1汤,还有少将同志一桌一桌敬酒。在饭桌上仰望和膜拜了各路神牛,但愿能沾点仙气,哈哈……

 

 

最后是题目的一些简单说明吧,有误之处望大牛们多多指点:

      A题很水,判断重复字符串和简单模拟,用map+string可以秒杀;

      B题很难,无人能出,据说是求出相交的矩形的交点,在拐点处连边,权值为边长,然后求最短路径;

      C题简单题,求三个矩形的并的面积,扫描离散化交点,再求多边形面积;

      D题难题,同样没人出,在一个矩阵中用长度不超过h的线段圈出若干个矩形,使其价值最大,二维DP,没什么思路;

      E题很水,可以求逆序数(二分或者树状数组),但由于只有两种状态,所以最简单的方法是for循环直接遍历一次,据说只有5行代码;

      F题有点难度,求直线相交构成的三角形个数,没什么时间想;

      G题是一个矩阵,若一个元素为'.',且它的上下左右有两个及以上的'X',那么它也会变成'X',这题看起来吓人,其实很水,遍历每一点,如果是'.'就以其为中心做FloodFill,否则return;

      H题也有些难度,在一棵树的n个点中选一个点,在与该点连通且路径长度不超过m的点中,选取k个,使这些点上的权值和最大,树形DP;

      I题是模板题,其实就是求有向图的强连通分量个数,我们还悲剧地没用模板自己写DFS;

      J题其实不难,就是一个模拟题,主要考数据结构的,可以用两个树状数组模拟数据库,也可以自己写AVL。

posted on 2010-05-17 02:36  烟雨华年  阅读(538)  评论(1编辑  收藏  举报