本人就读于浙江某双非经管类院校,今年4月真正在九峰大佬的带领下走进了ACM这条道路。
由于入门比较晚,最开始那个月我拼命在补全基础,大约在一个半月内写完了洛谷训练场(新手村+普及训练场)的大部分题,也正是在那段时间里我成功地从一个对dfs和bfs完全没有概念、对动态规划完全不理解的门外汉蜕变为一个初窥门径的菜鸟,这段时间的学习也为我后来学更难的算法打下了基础。
梦开始(碎)的地方——西安邀请赛
由于弱校且学长学姐们对大一比较照顾,我成功地能跟我的两个队友自费去西安打邀请赛,打比赛的机会对我而言是非常难得的,哪怕是自费。邀请赛应该是在5月底,那时候我大概刚刚学会最短路、并查集、最小生成树这类基础算法,但是我的队友比较给力,有一个已经熟练掌握线段树并对网络流、二分图匹配和一些基本的数论定理有所涉猎,另一个则对博弈论、字符串问题理解颇深。总之,队友确实厉害,学长们认为我们这一队邀请赛拿银应该不是问题...
然而理想与现实总是冲突的,那场我们3题打铁了,坐在对面的队伍rk4,我记得很清楚,这支队伍叫“几何旋律”,他们的题数应该是我们的3倍...
这场我们输在了经验上,M题我读清楚题意后dyf直接上手,这题差不多就是魔改dijkstra。第一发没注意数据范围,交了一发,TLE;然后改了一下,加了个堆优化,又交了一发,还是TLE...这时候我们就开始怀疑自己解法的思路问题了,因为对面几何旋律在开场10min的时候就过了这题,dyf跟我说你去想想有没有什么简单的方法,比如dfs啥的...然后我们就在错误的路上越走越远了,这题我们在打完的时候出来问了问学长,发现他们的写法几乎和我们是一样的,甚至我们的还要比他们更好,至于为什么没过我实在是百思不得其解。这场比赛在计蒜客上有重现,我拿一模一样的代码交了一发,32ms AC,现场给了2s没跑出来。
还有一题我记得是C题,样例错了...但是由于工作人员开场时讲了一下F题面的问题,我们也坚信这样盛大的比赛不可能会把样例这么重要的东西弄错,就算弄错了也肯定会有工作人员告知,于是我们就一直在推那个错误样例是怎么出来的...最后这题当然没写出来。我记得xjn在比赛刚刚结束的时候问了一下隔壁队伍C题的写法,隔壁队伍说,Clarification上说了这题样例有问题,改掉了...
这场邀请赛体验确实不好,C、M离AC真的就一步之遥,两题都出银牌,出任意一题也有个铜,但是打铁真的让大家都挺难受的...
这次打铁告诉了我们看Clarification真的真的很重要!
黑暗——秦皇岛
很幸运,我第一年打ACM就能有去打CCPC的机会。
一开场,xjn很快就找到了签到题,猜了发题意,4min 1A。
然后,这就是我们队这一场唯一过的一道题。
...
我们卡死在F题上了,一道dfs判环的题,我和dyf一直在想怎么用tarjan去写,正当我们准备放弃这个算法的时候,隔壁队用tarjan过了...
xjn去开了一道新题,因为机子大部分时间都被我和dyf占用,最后那题也没调出来。
于是一支被看好的队伍拿到了他们第二块铁牌。
...
总结:卡题超过1h立马放弃换新题
不要过度占用机子时间
当一道题场上过了一片的时候不要去想什么高难度的算法,应该往基础算法上多加思考
果实——南昌
记得去南昌的那天天气很好,宾馆也很棒,江西师范大学也很大,校园也很漂亮,晚上我们队和另外两支队一起吃了火锅,嗯,火锅也很好吃,吃到晚上12点多才回宾馆睡觉。
Day 1 :热身赛
有一说一,这热身赛把我吓了一跳,刚开始A没注意到会爆long long,wa了一发,改成__int128后就过了。然后就开始了自闭之旅,在队友写A的时候,我读了B题题意,他们一A我就马上让他们上Java(因为题目中没有取模,输出答案是最大可能会到2^1e5),写好Java后自信满满地交了一发,wa了,那时候我确信自己没读错题意,让两个队友继续看这题,我去开C。我弄懂C题题意以后,发现这是道几何水题,然后让两个队友继续去找B题bug,我来写C。我也不知道怎么回事,那天运气很好,我在输出位数的时候也没去数样例里输出了几位,我就随手打了个%.10lf,然后顺利地避开了热身赛没有SPJ的坑...后来dyf让我去看看榜,看看B题有没有人过,发现大家都是wa,然后我们就意识到应该是题面或是数据出问题了,等了几分钟,Clarification给解释了,B题答案要mod(1e9+7),然后热身赛没有SPJ...B题很快就过掉了,D题思路也很快就想到了,但是由于没有SPJ,谁也不知道出题人想要选手按什么顺序输出,然后我们就拼命试错。最后我突然想到一个可能会导致答案不同但是正确性不变的地方,改了一下,然后Correct...
这也是我第一次AK热身赛,虽然题面、SPJ的锅挺大的,但是题目的感觉还是非常棒的。
Day 2 :正式赛
开场我打头文件,dyf和xjn读题,我打好头文件,登录账号以后他们俩对C题的想法也差不多了,他们上机开始写C,19min 1A。
在他们写C的时候我读了K,L,K题虽然题面简单但是我想了好久没想出来怎么做,然后看了L题,发现就是一道简单的模拟,除了一个单词比较模糊“Concede”,我就根据日常生活中体育比赛的计分方式猜了一发题意——净胜球数,然后跟xjn讲了遍题意,就上机了,写得很快,交了1发,wa,虽然不解,但还是立马打印,然后让出机子。这是dyf也大概读懂了E题题意,我先是和xjn找了一会L的bug,但是看了许久也看了Clarification对concede这个单词的解释,感觉还是没什么问题,之后我就去帮着dyf写E了。然而就在dyf写E写了一半的时候,xjn突然把我拉了过去,他悄悄跟我说,你觉得n=1的情况下,我们这份代码会不会有问题。我按照n=1的情况对我们代码跑了一遍,一拍大腿,tm这加个特判就好了。然后dyf赶紧让出机子,我们对着原来的代码加了一句特判,然后 54min 2A。
之后就是dyf接着写E,我在一旁看着,防止他出现一些难以觉察的小错误,xjn去开了J,G。之后大概过了20min,dyf把E题写好了,过了边样例,我看了遍他的代码,觉得没什么问题,然后交了 73min 1A。
之后xjn跟我讲述了J题题意,我一听立马想到,这tm不就是我前几天刚看过的Polya定理吗?只不过我不会而已...我们当时就果断放弃这一题,去开别的题。之后我看榜上有人B过了,然后就是我看B题,dyf和xjn看G。然而xjn似乎觉得他G题完全没有思路,而我知道B绝对是状压但是我不擅长,然后我们就换题思考,我让dyf跟我讲述了一遍题意,刚开始提出过二分答案的想法,但是后来发现这并不具备二分性,然后也陷入尴尬。没办法,想不出方法就先打张表看看,我一打表(打到1e5)发现后面几位全是0,我有点懵,最开始的想法是打表打错了准备重写一遍代码,然后忽然意识到这个模数可能并不是一个素数,并且马上就找到了2803这个特殊的数字。在得知了这一重要性质之后这题其实也就不难了,130min 1A。
最后我们三个人全都去想B题了,可惜直到最后也没把这题解出来,期间我们提出过状压+网络流的想法,但是一直有个奇怪的bug没找出来,最后那段时间我们想尝试一下暴力dfs,但是算算复杂度又远超了时间限制,最后也没敢上手。赛后一听两支学长队伍,发现他们都是暴力dfs过的...
这场也是我第一次不打铁的xcpc,凭借着手速和运气,拿了块银牌,也算是ACM生涯一个比较好的开始吧。
故地重游——西安 EC-Final
运气很好,今年拿到了学校的非ec名额能够回到这个最开始的地方,在想象中我意气风发、一雪前耻,切题如切菜,然而实际上......
最后2题铜尾结束了今年的赛季之旅。
确实是实力不够,思维训练量还是太少,争取在明年多校之前cf稳定在紫名吧。
今年就以2*铁+1*铜+1*银结束了 。