2013第六届辽宁省ACM程序设计竞赛总结+流水账

来源:互联网 发布:程序员编码规范 编辑:程序博客网 时间:2024/06/10 04:07

     第一次写比赛总结,毕竟这样的比赛比一场就少一场,以后任何一场比赛都有可能成为我的退役赛,所以决定以后的每一场比赛都写总结。


热身赛:

在火车上站了六个小时到沈阳,饭都没吃赶到沈阳大学参加热身赛,进场时比赛已经开始半个小时,发现连水都没有,只好又饥又渴地看题。看了一下A,C都是codeforces上的原题,B题是SB加RP题,稍微讨论了一下,决定每人都试试手,三道题,正好每人一道,硕哥先敲了A,直接贪心就行,1Y,然后我看了下C题,题目很长,不过我以前做过,所以很快就读完,在codeforces上我是贪心过的,当时写的很纠结,后来发现其实暴力广搜也能过,就准备直接暴力。

很快敲完代码,运行,样例未过,查错,发现dist数组类型弄错,改之,过样例,这时发现题目是多组数据,不像codeforces上是一组,感觉会超时,不过都写到这了,决定先交一发,不行就换贪心,结果0ms1Y。。。只能说数据太水。接下来就无压力的做B,搞了个随机函数,拼人品,结果WA,WA,WA,WA。。。。最后9Y。看了下排名,发现是AK的队伍中最后一名。。。还是9Y惹的祸啊。接下来没事干了,熟悉了下机器,系统,比赛结束。


正式赛:

开赛前还是冗长的开幕式,一堆领导就坐后就叽里呱啦一通,不过“胡老师”还代表所有参赛队员发言了,据说因为这事还特意买了双鞋,呵呵。

正式开赛后,我先看了ABCD,硕哥看后面,斌哥看中间,看了前几道,感觉题意都很好理解,就是敲起来有点麻烦,过了十分钟,发现E题被A爆,马上去看E,发现是一道极其诡异的概率题,想了半天硬是推不出来,当时就想不通为啥全场都能过得题我不会做,接下来只好放弃E,转过来看C,赛后才知道E题就是我们整场比赛的败笔。

C:      C题是个找规律题,类似于约瑟夫环,顺着思路推了一下,这时硕哥说他想敲C,问下什么思路,竟然说是暴力。。。。。汗,1000组数据,n最大为10^6,当时怎么没想到拦住他呢。。。硕哥敲完提交,TLE。。。

不过好在在他敲C的过程中我已经想到C的正解,用记忆化搜索可以实现log(n)的复杂度,我替下硕哥,提交2Y。

D:     这时已经过了30分钟,第一名已经3题,D题就是一道水计算几何(不知道能不能算计算几何),但是直接敲有点麻烦,有几天没敲题了,于是把他交给硕哥。我转过来想F,F实际上就是一道离散化+搜索,但是离散化过程中有一些细节要处理,当我把细节想清楚后,硕哥的D也快敲完了,于是出了几个数据帮忙检验代码,不知是运气好还是什么,我出的数据正好就是他代码的bug所在,改完后提交 1Y。

F:  D题A后,我换下硕哥来敲F,F我写得很长,一些细节不是很好处理,敲代码+调试大概用了30分钟吧,过样例后又测了几组数据,通过后,提交。 1Y。(貌似拿了F的FB,貌似。。。)

J:    敲F的过程中,斌哥他们将J的思路整理出来了,我听了以后感觉靠谱,就直接敲J去了,J题我们的方法是维护一个三元组,ab,cd,ef,分别表示字符串中A的数量减去B的数量,C的数量减去D的数量,E的数量减去F的数量,初始为0,从左到右读入串,若果出现非A到F的字符,直接输出NO,否则,若遇到A,ab++,遇到B,ab--,其他两个类似,每读入一个字符,判断(ab,cd,ef)三元组是否出现过,这可以用set来实现,若出现过输出NO,否则加入set,最后判断ab,cd,ef是否都为0,是的话输出YES,否则输出NO。敲完提交 1Y。

E:      接下来斌哥他们又讨论了G题,就是一道模板计算几何题,判断三角形和圆的位置关系。觉得可做。这是看了下board,发现派我们前面的都过了B和E,于是决定让斌哥和硕哥一起敲G,然后我来想B和E,E题当时已有大半队伍过了,于是我先想E题,想了很久还是推不出公式,无可奈何下只能试几组小数据看能不能找到规律,没想到还真给我YY出来了,公式如此之简单,代码加上include也不超过10行,二话不说抢过键盘瞬间敲完,然后1Y,这时比赛还剩下2小时,我们队5题,除了正在做的G以外,还有一个B题感觉可做。

B:     B题觉像是一个组合数学,但是不会推,于是准备往dp上想,一开始的想法就是设dp[i][j][k]表示前i个盒子放了j本书,且前i个盒子中放书数量最多的数量为k的方法数,但是n<=300,这么写的话要开个27000000*sizeof(long long)的内存,必爆内存,于是只好另寻他路。这时硕哥他们的G已经敲完,调试完提交后竟然CE,然后点CE还不给提示是哪里编译出错。。。真是啃爹。。。于是硕哥他们苦逼地检查代码,我苦逼地想B。大约还剩一小时的时候想出正解,设dp[i][j]表示将i本书放入j个盒子的方案数,则dp[i][j]=dp[i][j-1]+dp[i-j][j];想到正解后立马上去敲,迅速敲完提交,1WA。。。检查代码,发现初始化没弄对,改之,提交 2Y。

G:   将B题过后就和斌哥他们一起看G,发现有个函数重名,改之,提交 2Y。

 

比赛还剩下40分钟,我们队7题,大约排在第六。看了下board,发现I题有三个对过,H有一个队过,于是就和硕哥一起想H和I。

 

H题一看就想到了AC自动机,不过这里的模板串是由单词组成,而单词可能会是一个字符串,直接建立AC自动机的话会爆内存,不过当时没怎么仔细看数据量,就直接敲了AC自动机模板,后来才发现这个问题,然后这道题就没思路了。

 

I题是个数论题,我最不擅长的,YY了几种方法,但是都觉得不靠谱,于是就没什么想法了。

 

题压根没仔细想,赛后发现是个原题,而且我还做过。。。

最后二十分钟就一直在看board,然后吃饭,在最后7分钟的时候高富帅他们队反超我们,怎么每次比赛都有人在最后反超我们。。。。最后7题收场,排名第七。

 

最后卓哥他们队获得冠军,DUT包揽前十,不过由于要赶火车,没有出席闭幕式,算是一个遗憾。

 

这次比赛总的来说还是比较满意的,虽然好久没敲题,但是手感还是不错的,除了B题傻逼了,其他四道全是1Y,败笔就是E题,还是没有经验啊,看到那么队过而且第一个队一分多就过了,肯定代码量很短,答案是一个公式,如果早早想到这点,E题应该一小时以内就能过,而不用等到三小时以后才过,白白浪费了2小时的罚时。

 

省赛已经结束,东北四省赛近在眼前,这几天好好复习一下,准备迎接东北赛。。。

原创粉丝点击