Wiki_ki

导航

FudanACM校赛

    尽管很多人不喜欢张江,但是我还是蛮喜欢这个地方的(当然也许我多住几年会改变想法),一般大家诟病的就是人少,尤其是妹子少- -,好了,扯远了,感觉我们院还是很大方的,只要是去的人,人手一个u盘,而且我事后帮另外两个人领u盘时,本来以为可能会核实一下真的假的的流程直接没有,瞬间感觉果然大张江还是很好的。

    首先当时知道这个比赛后,我回忆起高中oi经历,还是积极响应号召去给大牛们涨涨信心,orz,orz,参加这个比赛,当时我的想法是我不想抱大腿打酱油,打酱油也要自己好好的打酱油,抱大腿的行为我觉得基本就是托后腿的行为,当然显然也没有大腿给我抱,大神们都各自抱好了团准备草割我们了。所以,我就找王晗谦(whq),罗学长组了个队去打酱油了。队名是罗艺取的,Sudra,意为:首陀罗,印度奴隶制的底层,实在是闷骚的屌丝。赛前一周本想在poj上刷很多题目,把一些经典的数据结构跟算法都拉一遍,但是结果是只做了个位数的题目。whq貌似也差不多。

    A:模拟,这题我没看,是whq写的,据说巨水,好像就是用一些字符串替换另外一些。。。

    B:听罗学长解释题意好像有点像华容道,当时想应该是搜索,但是看board一直没有队对,所以一直没写,后来也没看了

    C:用最小的正方形来覆盖四个给定的正方形,取最大的两个,边长相加即可

D:数学题,由于罗艺数学太强,所以我们一直将其当做组合数学做而直接将本题给罗艺,罗艺给出的通项公式都不具有可编程性,后来一直没磨出来,事后昊哥告诉我是dp,回来想想确实是的f[i][j] = sum(f[i-1][k]*C(J-k,k))。

E:呵呵,我一直以为是爆搜加优化,总觉得比较像虫食算,后来听zs大神说是dp,两道dp一题都没做出来,真给跪了,高中时我们学校貌似是最重视dp了,dp做了一堆一堆的。

F: 没看题目,是whq和罗艺讨论的,whq很快想到了思路,但是后来发现不知道不TLE的方法。

G:学长中间突然跟我们说,这题是水题,求中位数,我看了下数据,呵呵,数据结构题,果断虚了,写不动啊。

H:单调队列啊,现在弱爆了,写了个线段树居然还是TLE的

I:大概是最小生成树的变种,貌似很难,对的队很少,本来想直接贪心+kruskal的,后来看对的队实在太少就算了。(显然不会那么无脑)

J:说好的0.5000…至今不明白为什么不都是0.5000

K: BFS,一开始误以为是10000*10000,其实是100*100

L: 打表的水题

     由于我们没有人参加过noi,所以一上来的试机尤为重要,linux完全没用过,我们选择的是用codeblocks来写,我上去先写了个快排,还算顺利,whq后来写了个KMP,一直在调错,都忘光了呢- -。后来罗艺提起,当时应该不写代码,多适应适应系统。比赛过程总,我们的程序就没有跟踪调试过,都是静态查错。

     比赛刚开始,我们的策略是罗艺速看所有题目,我跟whq随机挑选看(两个英语小弱),我一不小心翻到最后一题,发现是个水题,让读者将罗马数转成数(完全没有看题目,就是看样例的),当然为了谨慎起见我们还是选择回头看看题目,防止有trick,但我们还没来得及看题目时,罗艺就说C是个水题,用一个大正方形覆盖四个小正方形,我直接上机写C了,这里还有个小插曲,由于对提交系统也不熟悉,8min时我们提交第一次上去后发现没有反应,看board没有显示我们solve了一道题目,我顿时虚了,怎么会这样,难道是我提交错东西了,又改了改又提交了1次,后来才发现原来是没有评测结束,对于系统实在是一点都不熟悉。确定C对了之后,我直接看L了,罗艺和whq在讨论A,L我记得我初中写过,好像是czoi里B组的一道题目,我觉得模拟还是比较烦的(怕

     凭借我们唯一的优势------罗学长bug一样的英语,我们三题水题切的很快,45min时三题切完,可以说已经是很快了,而且为了避免像GCJ Round 2 那样悲剧,我们特地在大概明白题目意思后,还让学长细看一下里面的一些细节,所以三题都是1y,但是之后的4h15min是无尽的挣扎。

     我们首先看到的是J和D,两道“数学题”,对于J,看完后由于题目意思理解不当,加上样例举的实在太黑了,罗艺列了一个式子算出来永远是0.5000,后来我们又集体认为它是一个 独立事件,我们激动不已的以为又看到一题水题,如果我没记错,当时是我写完L,whq准备开始写A中间,罗艺激动的叫道速写J,直接输出0.5000,但是反馈的结果是wa,直接蒙掉了。下面的时间我们一直想J,D,中间罗艺告诉了我I和B 的意思,I我一开始的想法是贪心+最小生成树,后来想想显然不行,于是觉得I比较难就暂时放弃,B罗艺说完题目,我还不是非常理解,加上我看board,当时没有队对B,所以我觉得可能这个搜索题比较难,故又暂时放弃。于是我们继续想D,J,D题的意思很明了,我觉得跟组合数学有关系,于是掏出组合数学书,让罗艺想这道题目的做法(罗艺的数学最强),事实证明我们走错了方向.

     罗艺在想D,J时,whq A了A题,这时我们遇到了无题可做的局面,我们看到很多队A了H,于是我开始于whq讨论H的做法,罗艺继续攻克D,J,H我很快想到了正确的做法,很遗憾,单调队列我以前用的比较少,我对它的记忆还是停留在lis问题的优化上,本题在提出方法后我选择使用线段树来做,H是个噩梦,我们大概花的时间最多,但是到最后都没有对,我第一遍打完线段树程序后,居然不小心被我删了,不知道哪里是回收站的我又敲了一遍,小调试了一下,过了自己做的一些数据后,提交了第一次,但是很不幸wa,原因是因为没有考虑0的情况,改完之后就是TLE,后来我进行了一些常数优化,但是依旧是TLE,后来回来对着数据调试了一下,原来是少加了一句话,因为前几天刚好写过一个小有变化的线段树,观摩了一个blog上的程序,觉得他那样写线段树很简短,以前的写法稍烦(其实是相当于一个是正过来,一个是反过来),凯神回来看了后说不能这样写,应该是像我曾经那样写,但是我想了想本质是一样的到底哪里出问题了,后来发现少写了一句话。

int    find(int s , int t , int num) {

    if (s > data[num].r || t < data[num].l) return LIM;

    if (s <= data[num].l && data[num].r <= t) return data[num].min;

    int m = (s+t) >> 1;

    int p1 , p2;

    p1 = p2 = LIM;

    if (num*2+1 <= MAX) p1 = find(s,t,num*2+1);

    if (num*2+2 <= MAX) p2 = find(s,t,num*2+2);

    return min(p1,p2);

}

     这是我查找区间最小值的函数,其中加粗部分在比赛中没写,直接导致时间复杂度完全不是一个层次,当时真是脑抽了,TLE后误以为线段树常数太大,不可行,后来又看了K题,本来觉得可做,一看数据范围10000,瞬间觉得不可做了(其实还是看错了),罗艺提出了两种解决D题的方法,一个是基于生成函数的,另一个则是一个通项公式,尽管这个公式在数学上写起来很方便,但是写程序都是不太可行的方案,所以都不了了之,whq突然想到了H的做法(后来证实是错的),于是大家讨论了一会儿后我们果断让他上去写,这是我们的rank已经惨不忍睹了,期间我们其他题目也都看完了,归结下来觉得最可做的就是D,J,H了,H又wa了两次,这时我突然发现原来K的10000是数的范围相当于是个100*100的图,或者说因为本题要稍微拓宽图,我估计拓展到120*120就没问题了。这时whq还在调试H,我果断让他先下来,我立刻写K,直接BFS了,216min,K ,1y,长舒一口气的同时得到了一个噩耗,whq的H的想法是错的,后面的时间就是纯粹的垃圾时间,我们一直在绞尽脑汁想D,J,H,当时我们觉得这三题程序估计都不长,而且都不难,G是个数据结构题,很长时间不写代码了,我对自己一点信心都没有,估计写了也调不对,也就没有写,F之前whq想到思路的,但是在某个操作上无法在时限内出解,故放弃,E我觉得比较像搜索,暂时没写,还在苦做D,J,H,看着满场的粉色(H),蓝色球(D),伤心到爆了,最后还有30min左右时,我说,算了,你们继续想吧,我先谢谢E了,E的搜索很快写完了,但是有点小问题,而且这个系统下,我不会跟踪调试,太囧了,所以最后还有5min时,想想放弃吧,罗艺最后又交了一次J(基本没有改动的J),结果当然是跪了。最后我们锁定在了4题,由于我们都是1y,最后是4题之首,真印证了“首”陀罗队之名。

     总结下来实力是失败的主要原因,实力太弱,又很长时间不练了,续航能力不足也是重要原因,任何一道题目只要卡了,没有直接1y,基本就废了,H是个典型的例子,如果我可以改出错误,如果whq去写单调队列(赛场上他想到用单调队列的,但是他认为我线段树都超了,估计是算法上有问题,不是数据结构的问题),H都是可以调整对的,但是没有良好续航能力的我们直接跪了。思维过于僵化固执,我几乎是认定了D组合数学题,E搜索题,然而事实是两题都是dp,如果知道方向的话,这两题应该也是可以做出来,而且这两题都不需要用到很难的优化。J题也是,只不过J题到现在都没想通是什么意思。(罗艺貌似想通了)

     昊神状态也不是很好,结果出来后也很“惆怅”(原话),其实我也很惆怅,被虐是应该的,但是很多题目如此郁闷的跪了,后4h的毫无作为,除了将提供的食物基本吃光外。实在令人惆怅。

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