好久没写题解了,主要是因为C站周赛的题目都做过,再写重复的题解会严重降低博客的质量。而一些新的题目又出现bug,写题解也没有太多意义。另一方面,很明显地感到,目前的学习又进入了懈怠期,没有了之前那种热血和冲劲,而这种冲劲一旦止住,再重启可就难了。所以问哥很多项目都是这样,挖好了坑,一旦搁置,填坑之日遥遥无期。这是个很不好的习惯,不奢求能改掉,只希望能慢慢改进。
说回周赛,44、45期因为有着《计算之魂》主题的加持——包括47期也是,增加了选择、判断、填空多种题型,整得像是学生时代的考试。(不过话说回来,C站的用户群体好像还是以在校生为主,所以也就不难理解了。)但这种题型在online的考试中是没有意义的,一来容易作弊,网上随便搜搜就能找到答案;二来对一些题,尤其是填空题来说,答案并不是唯一确切的。图灵机还是图灵机模型、寄存器还是状态寄存器,甚至国外的论文翻译成中文,必须和答案一模一样,多或少一个字都算错,想必大家都有体会。甚至有的选择题,也是可argue的。比如对于n>2, 方程 x^n+y^n=z^n 可以有整数解,那就是 x = y = z = 0,所以费马大定理原话说的是“正整数解”,或“非零整数解”。虽然有点玩文字游戏的感觉,但是搞学问,难道不应该更严谨吗?种种疑问,到了出题人这里就变成一言堂了。私以为这是非常不可取的。
而编程部分,由于是OJ系统在线判题,并不关注选手是如何实现的,而只是检查结果是否匹配,虽然也会有上面提到的argurable的部分,比如输出格式,多或少个空格就算错误等等,但由于大家都已经习惯这种系统,所以并没有多少异议,反而是可以通过熟悉这个环境而为更大更正规的比赛做准备。但就这个部分,这么多期周赛,也没见C站有什么进步,题目还是描述不清,不同语言的bug依然存在,数据结构相关的题目,比如链表、二叉树等等,还是无法实现(很难吗?)。所以我感觉,C站的学习和周赛最多只能算是启蒙,各位如果想在算法的学习上更加精进,还是去别的平台刷题比较靠谱。
44、45期比赛的编程部分没什么可说的,都是简单题,题目也不完美,比如最近回文数,描述里很明显的漏洞就是,没有规定如果上下两个回文数距离一样,比如10的上下两个回文数是9和11,应该输出哪个?
46期的4道题都曾做过,只要记下n边形划分的公式(随便搜搜就能找到),3分钟就能写完。问哥本不想得奖,所以做完题并没有提交,而是关了浏览器,以为系统会在2小时的考试时间结束后再自动提交。谁知关闭浏览器的时候,就算提交了。然后放在榜首被一群人质疑,尴尬。问哥以后一定注意。
47期还是综合题,幸运的是这次问哥非编程题全部得分(原书影印pdf在手,想要的私信)。而编程题部分,第一道简单题不用多说,排序加滑动窗口。但第二题什么鬼?根本没看懂,你至少也解释一下示例是怎么计算得来的吧?此题也已多次出现在问哥的每日一练中(每个人的每日一练是不同的),但一直没搞懂什么意思,所以在考试中看到此题,直接两句代码骗了20%提交。赛后发现,竟然没什么人吐槽,难道你们有谁看懂了?如果有的话,还望分享一二。
以上就是最近几期比赛的简单回顾,并不是题解。问哥从头到尾参加了四十多期,真的感觉C站已经做到其能力范围内做到最好了——因为再反馈,也没什么变化。所以,大家take it easy,不再计较,也挺好。