写在开头
\(2024\) 年 \(2\) 月 \(17\) 日,本蒟蒻参加了平生第一场国外 OJ 的比赛:\(AtCoder\) \(Beginner\) \(Contest\) \(341\)。题目只有英文和日文的,显然,对于我来说,看题目都成了一个问题,所以比赛结果自然不怎么理想。
各题作答情况
请广大读者根据我的做题顺序依次来看各题分析,会比较有条理一点。比如说我在 \(C\) 题中写了去看 \(D\) 题,那么读者也可以将目光移至 \(D\) 题,我让你们再回来看 \(C\) 的时候再跟着我的思路一起回来。
\(A.Print~ 341\)
简单,但是看不懂题目,一开始甚至以为就是让我输出 341。在经过 eoin 大佬提供的英文翻译之后,终于看懂了题目并成功一遍 \(A\) 掉此题。
\(B.Foreign~ Exchange\)
依旧看不懂题,把题目丢到有道翻译里面去,因为有下标之类的存在,导致有道翻译出来的压根看不懂。求助 \(eoin\) 大佬翻译改题,他在聊天,没有空给我翻译,于是先开 \(C\) 题。\(C\) 题看完之后终于等来了翻译,太不容易了,开始思考样例。幸好我聪明,一眼看出这个样例解释就是在误导我,完全不需要按照样例解释给出的顺序来交换货币。理清思路之后开始写写写,样例过了,交一遍,结果 \(WA\) 惨了。重新看一遍代码,没开 \(long\) \(long\)。再交一遍!\(T\) 飞了,重新看一遍代码,我做多次减法的时候居然是用循环来实现的,而没有写除法!改一下,\(A\) 掉此题。
\(C.Takahashi ~Gets ~Lost\)
做到此题的时候心态已经不怎么好了,在上一题上面浪费了太多时间(只剩下一个小时左右了),再次看了一眼题目之后,发现是道搜索题,码码码。码到一半发现不对劲,开始思考给的那一串字符串是干啥用的,然后才发现是让我统计方案数!当时本来就慌,再加上题目不是中文,没有细想就开写了,是个失误。我一思考,这不对啊,好像没有什么快速的方法判断每个点合法,我只能想到以 \(O(n^2)\) 的复杂度枚举每个点,再以 \(O(n)\) 暴力判断是否合法。在被 \(B\) 题搞过心态的我已经严重错误估计了这场比赛的难度,没有瞄一眼 \(n\le 500\) 的数据范围就开 \(D\) 题去了。过了一段时间,被 \(B\) 题样例解释误导了的英语大佬 \(Eoin\) 同学切掉了 \(C\) 题,并告诉了我做法,我瞄了一眼 \(C\) 的数据范围,发现就是我之前想的那样,遂切掉。我才不会告诉你我把上下左右搞反了调了半天并喜提一次罚时呢!
\(eoin\) 同学是这么评价 \(C\) 题的:自己点进去看,\(eoin\) 同学太强了,%%%。
\(D.Only~ one ~of ~two\)
一眼看上去是道推式子的题目,推了半天也不会,于是回头把 \(C\) 切掉再来观察此题。观察了半天还是不会,此时离比赛结束只有 \(20\) 分钟了,我只切掉了三道题,于是果断跳过此题。
在切掉 \(E\) 题之后回来看这道题,还是不会,静等比赛结束。
\(E.Alternating~ String\)
一眼线段树,还是那种最简单的线段树,完全不用脑子,维护是否为好串,左、右端点的\(0\)、\(1\) 值,和翻转的懒标记四个信息就可以了,简单。开始写,十分钟不到写完,然后发现跑样例的时候 \(RE\) 了,调了半天发现是 \(build\) 函数里面忘记给左边界右边界赋值了,改了之后过了样例,交上去 \(A\) 掉了。花十分钟左右切掉这道题,还剩个三五分钟,回去看 \(D\)。
\(F~G\)
看都没看,不做总结。
写在结尾
定榜第 \(2035\) 名,算是在一万六千名中参赛选手中挤进了前 \(20\)%,作为第一次打 abc 的我,取得这种成绩还算比较满意。不过在比赛策略上也有些失误,在前面几道大水题上面浪费了过多的时间,不然说不定有概率推出 \(D\) 的规律或者把 \(F\) 给看了。
最后涨了 \(148\) 的等级分。怎么这么低啊?