2016中国大学生程序设计比赛中南地区邀请赛总结

湘潭大学的比赛是我参加的第一个比赛,正好那是2015年6月6日,到今天2016年6月5日,一年整!

一年前什么都不懂,不太意外的爆0了;在离开湘潭大学的公交车上我默默的发了一条说说:当我放下那台键盘的时候,我知道这不是结束而是开始。

一年后,又来参加这个比赛,我的内心甚至是紧张的,昨天10点闭眼床上辗转翻覆了好久才睡着。所幸!最后我们拿了铜奖,排名52,铜4。对于大部分人来说,在这么一个实力不是很强劲的比赛,这甚至可能是沮丧的成绩;但对于我们来说,对于我们学院来说,这已经是历史性的突破!突破了0奖牌的历史,相信我们信息管理学院的ACM会越走越好。

下面说一下比赛中发生的事情

星期六早上8点半开始坐车从南昌出发,下午2点多到湘潭的宾馆,又是一顿疲惫;拖着昏沉的脑袋去热身赛,去年的陈题,一共三题,我不是很顺利的ac了B题,WYN C题推了半小时错了弃了去吃饭,然后赶紧去网吧选课,没错,星期六正好的我们学校选课的时间,网吧三连座选课,毫无疑问,虽然我喊了两个人帮我挤选课,还是没挤进去!又是没选到课,三次了,没一次我选到想要的课的,老子忍不住在网吧就骂娘了!直到现在我才选13个学分,只能等退改选。然后LC和WYN这两个B选课通道一开5分钟就选完了。受伤的总是我。

晚上在宾馆各种讨论明天的战术,事实证明这样的讨论还是很重要的,一个队伍的实力,并不是简单的1+1+1=3的效果,有可能是1+1+1<3,也可能是1+1+1>3;正是由于我们的讨论,才避免了1+1+1<3的情况发生。

第二天比赛,精神不是特别好,但是勉强能上。

LC 从前往后看,WYN从后往前看,我从中间看似看,扫了一遍题目,直接感觉G题可做,但是我没有细想,因为G题虽然能做但是不是能秒的。第一时间我还是想知道有没有直接能秒的题目;刷了一下榜A题有人交了一发错了。梁超一直在看A题,一个求一个2*2的矩阵的%7下的n次方的题目,但是n可以达到10^100000。我说找规律,不可能那么大,肯定有周期;于是让LC敲矩阵快速幂找规律。没发现其他什么可做的题目,我跟WYN说了一下G题的题意。WYN讨论了一会就推出了方法,换WYN敲G,一遍下来,样例只过了一个。LC要继续A题,提交打印G题,但是坑爹的是,G题的这个提交打印迟迟不来!WYN左等右等,还是不来,只好和LC一起看A题,LC根据题目的提示猜周期就是2016,但是要n%2016,n还是要用大数。LC敲对着模版拍大数,WYN在旁边看。其实G题只是一个该用double 的地方用了int,但是打印迟迟不送来,LC又在拍大数,完全没机会发现这个错误,于是一道本在20分钟该A出来的题目硬是拖到了1小时20分钟后才交。。这时候半小时已经过去了,和我们预计的半小时前出一题的情况完全不符。。又刷了一下榜,A题过了4、5个,G题过了1、2个,J题过了1个;于是我去看J题,一看n个城市n-1条路,每个城市有一个塔,每个塔会保护有直接连接道路的城市,问Bob要摧毁所有塔的代价,题目看太快结果没太理解清题意,一看题目好像变得特别简单,我简直无法推翻自己优美的贪心策略,但这也太简单了。这会G题还是没送过来,我跟WYN说了一下J,WYN推翻了我的贪心。。时间一分一秒的过去,一个小时多过去了,大数模版太复杂梁超撸了半天不知道哪错了;才按照前一晚商量的战略换WYN改G,我在旁边辅助他,很快我就发现aver没有设double造成精度丢失,赶紧改了测试几个数据1Y。然而这时候已经1小时20分钟了!刷了一下榜G题已经过了几十个队伍,然就是A题,J题也有好几个队过。

我默默的去旁边继续研究J题,又细读了一遍题目,发现了想当然的理解错题目意思了,题目的最后一句话感觉说的不是很清楚,bob摧毁塔的时候是否要按顺序感觉模棱两可。但是一个塔对bob造成了damage之后不会被摧毁,这是肯定的,我跟WYN更正了这个描述,又讨论了一下,然后去上了个厕所,回来之后WYN说他会了,还是贪心,只要每次选最大的摧毁,然后计算每次摧毁受到的伤害,他说应该不用按照顺序。我立马脑袋里弹出写法:只要维护一个优先队列,每次弹出武力值大的摧毁,然后统计它直接邻接的点要对bob造成的伤害。

这时候LC还在拍大数,我让他打印了,换我敲J;这次打印不久就送过来了,LC和WYN一起对这模版玩“一起来找茬”,终于他们发现了不一样的地方,换LC改A,样例终于过了!交了一发结果RE,我一看大数尾数数组才开105,改成1e5还是RE。我没管在想J题的具体写法;然后他们又改了哪,又交一发PE,每行最后多输了一个空格,再改一下A题罚时60分钟终于在1小时55分过了。

换我继续敲J,LC和WYN在讨论H和D题。我在两个地方都定义了u,v变量,我觉得这样应该没影响,但是结果一直不对,查错查了很久,改了这里之后就对了。J题2小时13分1Y。看到accpted一瞬间我不禁的拍了一下桌子,爽!因为这时候我们过了三题,毫无疑问已经排名靠前了!排名瞬间上升到40多!甚至摸到了银牌,瞬间好激动,去厕所走了一圈平复一下心情。但是由于A题的罚时和G提交的极慢在3题里排名倒数第2。

我们判断了一下3题可能能拿铜但是由于我们罚时多很危险,必须再做一题才能稳铜。这时候可做的题目有D,在我写J的时候他们一直在讨论;H,他们讨论了然后弃了;C题,有人过了但是没看题。

于是我看C题,他们继续讨论D,C题是图论,给n给点的无向图和m条边,问遍历所有点且每个点只走一次的最小代价;n的范围是1e5;接下来的几分钟我们的电脑都处于空闲状态,我在苦思冥想C,他们两在讨论D。C题题目中文翻译是曼哈顿路径;我在kuangbin模版里看到了曼哈顿最小生成树模版;瞬间感觉好有道理,这题难道是一道曼哈顿最小生成树的裸题;但是模版都有上百行,看不的半懂不懂。接近12点了,志愿者把午餐发给了我们,但是我们都没有心思去吃。他们两一直在捋D题,WYN一直说就差一点了。

我弃了C题,看H;H是一道数学,题意很简单,也有一个很简单直白的方法,两层循环一套就是答案,但是n是1e5,直接超时。我试图着化简公式,推出公共项;然后根号里面套绝对值简直让人束手无策。推了10几分钟我对LC说,推不出来,弃了?LC说,弃了。我把H题那张纸一扔,跟LC讲了下kuangbin模版上的曼哈顿最小生成树。他看了一会说会了,终于到这时候电脑才被用上,LC拍C题去了。我和WYN讨论D;因为之前LC说不确定这样贪心会不会有漏洞,我让WYN再重新给我讲了遍思路,顺便检查下这样做有没有漏洞;一步一步,他一边讲我一边推,应该没有漏洞;分三种情况讨论,前两种他之前已经推出公式了,现在推第三种情况,确实很啰嗦,赞一下队友清晰的头脑!

LC这时候正好退下来说他发现模版套不了,写法不一样。换WYN敲D;我在旁边看。历经艰难,最后敲完的时候只剩不到半小时了,三个人一起盯着D题调试。样例过了,LC这个家伙就说要交,但是我知道还有一种特殊情况没考虑,特殊数据一测果然错了,直接输出一个负数。加上判断,交了一发,这时候只剩20来分钟了,交的时候满脸笑容,结果确实无情之WA!全场沉默了5秒。怀疑是不是贪心做的想法在的心头一闪而过,然而又硬着头皮说继续测数据,三个人一起算,手撸数据效率还是很高的,又发现了一个过不了的数据,这时候只能靠WYN来具体判断哪错了,因为我们都有点跟不上他的想法;WYN一拍大腿说知道了,第三种情况里写法有漏,改了过了这个数据,再试一个边界数据又错了!这时候还有十几分钟比赛结束,成败只在一瞬间。打开debug跟踪变量值,发现k值在一个应该等于8的时候等于了7。

没想到发生接下来极富戏剧性的一幕……我这会坐在靠近主机的这边,敲着二郎腿,就在我一拍大腿发现又是int整除丢失精度几秒之后,我们三个就眼瞪瞪的看着屏幕上飞快的显示了几个字:

仍要重启吗……?

正在重启……

卧槽!我踢到了主机上的电源键,重启了!

队友一边骂着我一边忐忑的等着开机;不过我们昨天测试过D题是非还原盘所以代码保存在D盘,按道理来说不会丢失……这时候只剩10分钟多一点点,D的代码都没了意味着什么不敢想象……

开机了,点开我的电脑,傻眼了,D盘的那个容量进度条看起来就是空的!继续点进去一看,卧槽,还好还好还在,原来是D盘就存了几个代码,在200多G里磁盘占得太少了几乎看不出来。心情在那几秒经历了巨大的起落……

把精度问题一改……所有数据都过了。交一发,这会比赛快结束,很多人在疯狂提交,OJ好卡,结果一直不显示;WYN哆嗦着按着F4在“刷新”,我一边按着F5说;“草泥马WYN你按的是F4,笑死我了!”

F5,F5,F5……Accpted! 瞬间我跳上了WYN的背上,4题!在4小时54分的时候过了第4题,意味着我们肯定能拿个奖牌!这是我们从没有取得过的成绩,也会是我们学院历史性的突破!我们三个简直要手舞足蹈了!

我激动的直接从包里拿出手机把那个页面拍下来发给了教练。

最后滚榜后我们排在52名,离银牌只差4名,90分钟的罚时。总结一下,G题浪费的五六十分钟不应该,如果当时在稍微查一下就能发现double的问题,但是换做了A题,白白慢交了将近1小时,A题几次WA也是完全不应该,一次数组开小,一次PE多输出空格,这种低级错误浪费了40分钟!

另外,这次应该说我们已经正常发挥了,能做的4题我们都做出来了。剩下的除了看都没看的EFI三题、B,C,H我们都确实做不动了。说明我们的知识点还是太少,实力仍是不够强。下学期的区域赛想要拿牌还是有危险;如我们总结所说,暑假要玩命!大类的专题要熟练,个别小的算法也一定要看,比如今天的H题,如果真是傅立叶快速转换我们肯定要吃亏,因为我们不会,但是很多队都会这个。

写了好多,就这样吧!



评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值