记 2017 ACM 新手赛

学校举办的 2017 ACM 新手赛结束了,又一次证实了自己是个菜鸡~

说点啥吧#

其实自己也不算新手了,2016 的 ACM 新手赛打了网络赛,被刷了。17年的校赛消极对待,根本没认真打。这次本来也没打算参加的,后来 sq 来找我,然后组了个二缺一队伍。因为数模的事,本来想带某人去划水,结果又发生了些事,直接导致心态炸裂。后来 wy 来找我,然后就组成了划水三人组。

网络赛#

网络赛的成绩很好,第10,贼稳,4/6。

网络赛比赛是在12月16日,那天队里面就我下午考六级,考完之后饭都没吃就匆匆回宿舍参赛。

网络赛的话还算简单,wy A了 1000 和 1001,sq A了 1002,我A了 1003。1000 是道排序题,1001 是道栈,1002 其实也是道变相排序取最大值,1003 就维护 Map 和 Set。到后面的 1004 和 1005 就各种卡,1004 我们暴力的方向错了,导致这道题一直 TLE,1005 是毫无思路。(至今也没懂 1005)

现场赛#

现场赛的成绩很绝望,31(30名以内有奖品),4/10。

其实我感觉,现场赛的坑我要背大锅,要不是我的失误,肯定能进前30。

现场赛很迷,我们队前90分钟一直处于迷之状态,除了提交了一发WA之外,毫无作为。隔壁的女队都拿了3气球,我们还是处于 1WA-0AC 状态。这次比赛可以说是我们队有严重读题障碍,从A到B到C,没一道题读懂。

比赛开始了不久后,我就开始打A,样例二一直不知道是怎么出来的,感觉题目描述严重有问题,就说求分数最大值,也不说要满足什么条件的分数。一开始还以为是分数之和,因为样例一满足了这个条件,后来偶然发现了分数最大值是分数之和跟当前分数的 Max,然后刷刷刷把代码写出来,却忘记考虑了储存每一次 Max 之前的状态,以确保回退正常。然后第一发WA产生,然后队伍就开始各种迷,sq 和 wy 一直在研究C,而我一直在研究A。

比赛过了90分钟,我们队就只交了一发WA,超级迷。就在这时我才发现自己在A犯的脑残错误,赶紧刷刷刷改了提交上去一发AC。但是这个时候已经1点半了,于是水题分数贼难看。这个时候 sq 和 wy 也搞懂了C是什么意思,给我解释了一番我开始打C,于是乎进入了一条不归之路~(好绝望)

B和F我也忘记是先AC哪道了,反正这两道最水的题目都是很晚AC的。B题是我们一开始都没法理解题意,纸质题目上没有标明B是 Special Judge,我们一直在研究样例输出是怎么来的。后来我才发现OJ上标明了 Special Judge,超绝望,一直是我在用电脑,一直都没有看到,然后B就通过直接输出的方式给解决了。F题可以说是我们后期绝望的时候做的,一开始大家都没有想到去看一下AC率,后期才发现F题是AC率第二高的,就是一道简单的排序题。不过本菜秀好像在这里提交了一发CE。

G是一道把数字转换成英文的题目,由于我们剩下时间不多,我们直接暴力做这道题,各种重复代码。这道题也证实了我们英语是无比的菜,一直在查字典,深怕 Thirty 这些单词会写错。不过这道题第一发是WA让我难以置信,因为后面检查到是多输入了一个空格的问题,这居然不报PE,好神奇。

又回来说C了,这是一道从比赛开始就打到结束的题目。。。这道题大概跟我有仇,经历了 CE-TLE-WA-TLE-TLE-TLE,最后也没有解决。这道题可以说是我们队读懂的第一道题,一开始我用了比较暴力的方法暴力查找下一个点外加暴力并查集获得联通关系,然后很愉快的TLE。然后我把并查集删掉,通过一个数组来记录联通的数量,每次修改一个值的同时修改它的前后值 (这个方法是在 LeetCode 上学到的,好像是用来判断一个数组里面最长的连续子序列长度),不过还是没过。后来我把暴力查找下一个点,改为维护一个 next 数组,同时将所有 STL 全部删掉。不过维护 next 数组的算法,我换了好几种方法,都一直没能优化到 O(1),大概就是卡这里。出题人讲题的时候,说这道题用并查集做,不过我至今没搞懂。

结尾#

还是太菜了!