不要把笔记存到 Markdown 编辑器网站上!
不要把笔记存到 Markdown 编辑器网站上!
我昨晚在某个在线 Markdown 编辑器那里记了大约一页半的概率论笔记,按了保存,结果再登录的时候笔记就不见了!
要记 Markdown 笔记,就老老实实用 VSCode 写,本地存储,不然你就可能像我这样要花 50 分钟重写一遍!
不要把笔记存到 Markdown 编辑器网站上!
不要把笔记存到 Markdown 编辑器网站上!
我昨晚在某个在线 Markdown 编辑器那里记了大约一页半的概率论笔记,按了保存,结果再登录的时候笔记就不见了!
要记 Markdown 笔记,就老老实实用 VSCode 写,本地存储,不然你就可能像我这样要花 50 分钟重写一遍!
说明:为保护隐私,部分人名以字母代替。
说完最后那句“谢谢老师”之后,我走出西部片区 2 号楼 108 教室,示意排在我后面的 CJS——也是我的 XCPC(“ACM”)队友——进来。稳了,我想。
面试中对我最大的考验,是“既然你英语这么好,请你展示一下你的英语水平”。我之前准备了一句英文的可以作为自我介绍的话,于是我用它和一些基本信息拼成了一段简短的英语自我介绍。另外两个问题分别是“在 ACM 队里你的分工是什么”和“动态规划通常使用什么数据结构”。都不难回答——我只需要组织一下语言,描述一下我的经验就好了。而且既然问了这样的问题,那转专业自然是稳了。
大约 27 个小时之后,我看到了名单。我不仅顺利转入计算机科学与技术专业,从名单上看起来,我还是第一名。不过想到我满分的机试成绩,以及从清明假期开始准备的、用 Typst + Touying 精心制作的自我介绍幻灯片,这也并不奇怪。在新消息目不暇接的转专业交流群下面,CJS 已经在和我商讨组建宿舍的事。
虽然这一切都在我的计划之内,我还是感到有些恍惚。我的思绪里飞快地飘过一幕幕不远之前的画面——
我一开始构想的转专业第一志愿,其实不是计科,而是网络空间安全。当然,那是去年的 8 月,一切都只有一些模糊的轮廓,模糊到我连海洋和生态环境专业分别有哪些方向、信息学院大一有哪些课都说不出。当时选择网安的原因也相当现实——我担心转专业竞争太大,为了万无一失,想要在第二志愿填一个其他学院的更好转入的专业,而第一志愿自然要填信息学院比较好转的专业。再加上我长期关注阮行止的博客,对网安专业是做什么的比较有概念,也比较能接受自己像阮老师那样身为曾经的信息学竞赛(OI)选手而进入网安专业,我似乎已经做好了“换一条照样不错的赛道”的准备。
在 9 月和 10 月间,我投入算法竞赛的时间并不多。在 9 月下旬我参加了一个名为“第三届全国大学生算法竞赛”的比赛,获得了二等奖,但那毕竟是一个野鸡比赛。但我不可能忘记的一件事是报名蓝桥杯。这个比赛我在中学期间就有耳闻,我甚至还知道有 A 组 B 组,有提交答案题。我记得从 10 月底到 11 月初,我每天都要去信息学院的网站上查看是否有蓝桥杯的报名通知。11 月 12 日,这通知发出来了。
通知上有一个厦大蓝桥杯交流群的链接。当然,进入交流群有一点小小的困难。你问我你们学院的辅导员叫什么名字,我当然不知道。但既然是要转入信息学院的人,怎么能没有一个信息学院的学生最基本的信息检索能力呢?半小时后,我就在信息学院的一个微信公众号里找到了问题的答案。于是我第一次与厦大信息学院、电子学院和其他学院的这么多同学在网络上连接起来。
这时候,我的想法开始转变了。网安终究是和这么多年来我做的事情截然不同的方向,我真的要为了那点“稳妥”,去放弃我其实早已开始学习的计科吗?特别是当我翻看蓝桥杯、CSP、CCPC 和 ICPC 的题目时,这一切都如此地亲切;而网安于我而言,似乎和我在转专业失败的情形下渴望选择的方向——海洋物理——一样陌生。
2024 年 11 月 19 日的晚上寒风料峭。我从图书馆走出来,在旁边的教学楼的一排楼梯底下坐下。几分钟后,与 XCPC 队教练 Dr D 的约定好的通话开始了。
我确认了我学习算法的经历,以及加入 ACM 队的意愿。Dr D 问我擅长哪些算法,我如实说了。他说,我还要补一下短板,不过,“先来队里训练吧”。
第一次来到训练室——西部片区 4 号楼 104——的时候,我不知道该和队长 ZPC 聊些什么,但我久仰 ZPC 的大名,知道他是从海洋与地球学院转到信息学院的,便说起了转专业的事。他说,转专业考试非常简单,他当时“十分钟就出来了”。
是不是十分钟,我将信将疑;但我知道转专业的考试时长是两小时,即便这是夸张,我这几个月恢复一下手感,应该是能做出全部四道 C 语言编程题目的。那我非报计科不可了。
这个时间加入 XCPC 队,多少有些尴尬;一个赛季刚好进入尾声,而下一个赛季要在八个月之后才开始。但现在没有时间想这么多——每周六下午,尽管是一个人,一台电脑,也要像组好队的同学那样在 Codeforces 上模拟参加(virtually participate in)区域比赛。至少,其他队伍此起彼伏的讨论题目做法的声音,给了我一种家的感觉。
时间过得很快。寒假期间,我向父母告知了我的打算——一志愿计科,二志愿网安。我没说如果转不过去就去学海洋物理;这话听起来不太吉利。开学之后,我终于有了一位队友——CJS。他思维十分敏捷,他向我讲题目的做法时,我往往要请求放慢速度。我们一起想题、验证算法的正确性、互相帮忙调试代码。我总算体验到在一个队里参加算法竞赛的感觉了。
3 月 30 日,星期日,晚上七点。我在肯德基吃完晚饭,带着一些疲惫回到宿舍。
几分钟后,舍友 HY 问道:“你是不是参加了那个信息竞赛?”
我愣了一下:“哪个竞赛?”
“就是那个……CSP。他们在群里发了名单,你考到了一百多名。”
CSP 是认证,不是竞赛;但能排在一百多名,有些出乎我意料。当然,一部分原因是一些强的选手去年 12 月就考了这个认证,满载高分而归,从而把 3 月的位置空了出来;但这场考试毕竟有六千多人参加。我很快确认了消息属实。我那 360 分,虽然我还不是很满意,但已经排在了前 2.1%。
至于我的舍友是从哪个群里拿到 CSP 名单的呢?我立刻就明白了。这时候,转专业的氛围已经形成。前哨战是物理拔尖计划,和我一样作为为数不多的 2024 级选手参加大学生数学竞赛的 CZA 便成功从建筑专业转入物理专业。3 月 19 日,转专业通知发布了。计划转专业的同学发现,通知发布到考试的时间跨度,以及录取的时间窗口,都大幅缩小。虽然海洋与生态环境类学生的生活,已经成为实验报告、预习报告、实验报告、预习报告的循环往复,加上微积分与物理作业的点缀;但在有意离开的同学中间,当然会暗流涌动。这个群一定是转入信院的交流群。
直到加入了交流群,我才知道同学们为转专业做了多少准备。有人在开学初退掉了当前专业的课,退课多者谓之“梭哈”——该词疑似来自扑克牌游戏中的 Show-hand,后来在网络上取其“将筹码全部押上”之意引申到其他领域。群里的学长
4 月 3 日,信息学院发布了转专业细则。名额缩减了,还增加了报名门槛。细则里有一个歧义,即中学期间在学科竞赛中获奖的选手是同时受 3.0 的 GPA 限制和 30% 的排名限制,还是只受 GPA 限制。后来信息学院答复说只受 GPA 限制,不过我的 GPA 排在前 30% 以内,所以无论如何都能报名。还有一个细节,就是考试时长增加到两个半小时。
接下来的机试备考,无非是打打学长提供的模拟赛,以及熟悉熟悉 C 语言。但以防万一,考前我还是复习了一下算法。面试我反而不那么熟悉——此前我只面试过三次。PPT 自我介绍,我更是没有做过。我的自我介绍,应该用什么 PPT 模板呢?是大学语文课上甲同学的那种风格,还是大学英语课上乙同学的那种风格?
我突然想起一件事。好,现在,那些花里胡哨的 PPT 模板,我都不用。我要用学计算机的人用的东西——LaTeX Beamer 或 Typst + Touying。LaTeX Beamer 有些陈旧,又不好个性化。Typst + Touying 是新东西,连开发它的 Rust 语言都是新东西,我选它。事实证明,我的 PPT 没有动画效果,没有复杂图案,却赏心悦目。
我的幻灯片和自我介绍的稿子都改过很多次。我参考了网络上一些人的简历。幻灯片中“这些年,我学会了……”一节的前半部分,便是一份简历上必定会包含的“技能”板块。我得感谢自己在寒假学了 Java 和 Python,这让我的“编程语言”一栏没有那么贫瘠。
然后就是在图书馆的演示练习室准备面试。接着就是机试——76 分钟获得满分。再接着就是这篇文章开头提到的面试。最后这两天,反而是过得最快的。
于是,4 月 21 日,我在名单上看到了计算机系的自己。
感谢同样要转专业的 YSM 与 CHZ 给我提供 XCPC 队的联系方式。
感谢 XCPC 队教练 Dr D 对大一新生参加训练的支持。
感谢舍友 HY 向我透露转专业群的存在。
感谢队友 CJS 的帮助和配合,尤其感谢你提供转信院交流群的群号。
感谢转信院交流群中所有同学的分享,特别是学长们的无私奉献。
感谢 CZA 分享关于转入物理学院的信息(虽然我很快否决了转入物院的想法)。
感谢父母的陪伴和支持,尤其是母亲在转专业考试前的陪伴、关心和建议。
感谢多年来奋斗的自己。
我最近有一些事要做。我要补回因准备转专业考试而变得有些生疏的微积分和物理。我还要去福州参加大学生英语竞赛的决赛。如果还有时间,那就开始学习信息学院大一的课程——线性代数、概率统计。
至于更长远的计划,我也开始有一些想法了。
前两天闲来无事,看了看新加坡 OI 选手 Ashley Khoo 的博客。我不喜欢新加坡的某些方面,但我很喜欢像他这样的新加坡年轻人。他的博客字里行间洋溢着一种灵性:可以出二十几道题给新国大的的同学做;可以去听一位来访的教授讲组合数学题,尽管当天晚上就要飞去南非参加兵役
总而言之,不知不觉间,我就要离开我暂时的住处,到达更适合我的新环境了。
轻轻的,我来了。
正如我轻轻的走。
[1] “学长”的字面本来不区分性别;我一向反对给“学长”一词带上性别色彩。
[2] 新加坡规定所有年满 18 岁的男性公民都要参加为期两年的国民服役(National Service)。役男依其身体状况和训练状况被安排在新加坡军队和警察的不同岗位上。
我把这个博客的 NexT 主题从 v5.1.4 更新到了 v7.8.0,并增加了 utterances 评论系统。您可以用 GitHub 账号登录并发表评论。评论支持 Markdown。
过完年没几天,高三第二学期就开始了。我的语文和数学都是 100 出头,英语 130+,物理分数取决于难度,预计去高考有 80+,化学和地理都是赋分的,就不估计了,但化学极其差,地理也不好。于是从一开始我每周就会请十来节课的假,在家做语文题数学题什么的。语文非常玄学,通常除作文外能拿到五十几分或六十几分,但有时候能拿到七十几,有时候连五十分都没有。之前定下了一个策略,把那 150 分钟平均分成三块,第一块做语言文字运用、文言文和古诗鉴赏,第二块写作文,第三块写两篇现代文,当然实施起来自然会遇到各种问题,但总体上这个安排比较靠谱,就没改了。数学卷子的结构确定调整了,于是又制定策略,总之就是先把简单的题都做了。其他科目呢,就是各种练习,以及听网课,这里略去不表。
英语听说考试之前每天都在练,一会儿 18 分一会儿 19 分,考完觉得还好,没有什么大失误。一模前两天发烧了,去考试的第一天喉咙还是不舒服的,但一模大概排在 1300/32000+,作文拿到了 49 分,化学和地理考得还不错。这时候我开始专门练习怎么写好语文作文。我的英语考试扣分的地方基本集中在作文,于是就开始看各种好词好句。与此同时还会做那种非常难的物理题,提高熟练度。这时候要报名强基了,我想着强基就是要冲一把,报了个复旦大学信息与计算科学专业。
但是二模考砸了,掉到了两千多名。这时离高考还有一个月,学校的周测也改成了周五和周六测所有科目,于是我和班上的许多同学都是每周在周测和讲评的那几天回校,剩下的时间请假在家学习。英语听说考试的成绩出来了,我 19 分,班上除了三个满分的同学之外都是 19 分。一转眼就到了学校的三模,语文破天荒考到了 123 分,心想这么好的状态得保持住。最后一段时间又把更多时间花在了文科上。
然后就是高考了。
考完估分 [632, 636]。然后去考复旦的机试。没过。
6 月 25 日出分了,624,化学和物理的分数估高了。省排名九千多(共 45 万人),大概和二模成绩差不多,一看,没到去年的中大线。那一天我还在考虑大连理工,结果第二天发现大连理工缩招了,那确实上不了了。接下来就是研究中大、华工和厦大的专业组,纠结了三天报华工的 203 还是 204,把我的直觉和统计与概率知识全都用上了,最终还是觉得报 203 更可能成功。厦大这边呢,想了好久六个专业的顺序,最后一小时还用修改的机会加了一重保险。几天之后去考中大的综评,也没过。
接着便开始了每天上午的微积分学习,以及每天下午的报复性外出游玩。
7 月 19 日投档线出来了,以半分之差没能上中大,进了厦大。两天后的下午,我在琶洲闲逛时(碰上这里办漫展,周围全是 cosplayer),得知我进了海洋与生态环境类,这下心中的石头才落了地。
说来奇怪,我现在连一模、二模和三模的语文作文题目都完全忘记了。遗忘是人类的大脑清理垃圾的表现,只是我遗忘的速度让我自己有些震惊。(事实上,上面的排名数据也不保证准确。)至于这种遗忘是好事还是坏事,就见仁见智了。
不要搞错了:我永远不会赞美、歌颂高三的生活,因为那终究是迫不得已,终究是一种不正常的状态——为了榨出最后一些分数而日复一日地把时间浪费在刷题上。这是在发达的地方;在不发达的地方,高考成为了拘禁和虐待的借口。稍后我还会提这件事。
2024 年的暑假可谓相当充实。我整个暑假都在练习做饭(虽然一个学期过去又不会做了,哈哈),学习了整个大一第一学期要学的微积分,继续学习算法,继续练习英语,坐地铁到处逛,还搬了家。
被分到了环境与生态学院。在英语分班考中,我以 95.5/100 的成绩顺利进入大学英语(四)课程。扣掉的 4.5 分里有 4 分是听力的分,以后要多练练。
如果要用一个词来总结我的甲辰龙年,那就是“尝试”。
上半年为了进入一个好大学而尝试各种策略和方法,自不必提。下半年的 9 月,我第一次完整地体验 XCPC 比赛的感觉(虽然那是个单人赛);10 月,我加入了软件学社;11 月,我参加了大学生数学竞赛,并加入了学校的 XCPC 队;12 月,我参加了 CACC 和 CSP 认证,并入围 CACC 决赛。在实验课上,我尝试了许多以前从来没做过的实验操作,从用移液管移取液体,到戴着手套、拿着小刀解剖乌贼(俗称墨鱼);为了完成普通生物学、新生研讨课、宜居地球三门课程的小论文时,我尝试读懂《自然》《科学》《细胞》和各个学科分支的顶级期刊中的论文;为了提高我的英语水平,我试着参加了一些英语比赛,成绩有的很好,有的不那么好,但都收获满满;体育课我选了定向越野,虽然以前从来没接触过这项运动,但在这门课里我获得了非常充实愉快的体验。
将来,当我进入实验室(无论哪一种),为了项目的进度的而焦头烂额,甚至不得不奋战到深夜时,我大概会怀念有时间和精力不断尝试的时光吧。但即便到了那时,到了我知道我要做什么、不再能够——但愿也不再需要——去试各种各样的东西的时候,我也无法与我曾经的尝试切割;因为,我的现在,总是由我过去的一切塑造的。
10 月,我正式启用了 2022 年 9 月注册但从来没用过的 GitHub 账号,并将其改名为 silent-sure。(GitHub 用户名不允许重复,因而很难取;但这个用户名的寓意,相信是很明显的。)12 月 10 日,我用 Github Pages + Hexo + Next 搭建了这个博客。除去 MathJax 测试外,这个博客的第一篇文章是 CACC 与 CSP 的游记,第二篇文章是定积分的定义和性质(很遗憾,这一篇的 MathJax 炸了,到现在都没能恢复)。
我希望,在新的一年里,我能在这个博客中和大家分享更多有意思的东西。
(我忍住了,没给小标题加上“快与慢”,哈哈。当然,我也不按那个写。)
对于一个热爱数学的人来说,思考是经常做的事。例如,11 月学到定积分的时候,我在网上搜到一本 Pete Clark 所著的 Honors Calculus,顺着作者的思路,理解了达布积分和黎曼积分的等价性的证明——而这一切源于我对“闭区间上的连续函数都是可积的”的断言的疑惑。例如,我现在有时候会回顾那些曾经学过的数学知识,例如三角形的面积等于底乘高的一半,然后发现它并不显然的(即使不定义面积,也至少要证明分别取三条边为底算出来的结果是一样的)。
不过,即使不去思考这种“没用”的东西,也有太多东西需要思考。可能是思考自己现在怎么样;可能是思考接下来要做什么;可能是思考周围的世界是怎样运转的,现在又出了什么问题。人活在世界上,是需要思考的。当然,只有思考是不够的,还得有交流,还得有行动。但如果连思考都没有,后面的一切都无从谈起。
这里,我要接着谈前面提到的教育问题。12 月曝光的县中学生的悲惨遭遇令人揪心。17、18 岁的青年,正在风华正茂的年纪,却被监禁在自称为学校的场所,一举一动都受到控制,稍不注意就会受到处罚。在一些“学校”,学生们无法在不违反规定的前提下上厕所或洗头;甚至在一些“学校”里,学生们只有在一周一次的“洗澡课”上才被允许洗澡。关键是,在这些“学校”里,上至校长,下至教师,甚至受害者学生自己,都觉得这一切是为了一个正当的目的,即提高分数;而为了实现这个目的,受害者的亲人往往成为加害者。
这个目的是否正当,以及是否有任何目的能成为虐待学生的理由,暂且不提。一个更基本的事实是,哪怕不考虑手段是否合乎道德与法律,这些手段也无法提高分数;它们只会降低分数。
没错,这是一个系统性问题。越是系统性的问题,就越需要思考。所幸,许多有识之士已经开始思考这些深层次的问题,例如知乎答主“Thoughts Memo”。但愿希望的微光,能有一星半点,到达高墙之内的黑暗中。
许多问题,当我们司空见惯时,我们就不愿意思考了。我们放弃思考之日,就是邪恶宣告胜利之时。然而,一旦我们形成了思考的习惯,这就成为了一股强大的力量。就像哈佛大学教授 Micheal Sandel 在政治哲学课程“公正:该如何做是好?”(Justice: What’s the Right Thing to Do?)的最后一节课上说的那样:
I tried to warn you that once the familiar turns strange, once we begin to reflect on our circumstance, it’s never quite the same again. I hope you have, by now, experienced at least a little of this unease, because this is the tension that animates critical reflection, and political improvement, and maybe even the moral life as well. … Why do these arguments keep going, even if they raise questions that are impossible ever finally to resolve? The reason is that we live some answer to these questions all the time. The aim of this course has been to awaken the restlessness of reason, and to see where it might lead. … And if the restlessness continues to afflict you in the days and years to come, then we together have achieved no small thing.
与诸君共勉。
唱出你的热情 / 伸出你双手 / 让我拥抱着你的梦
让我拥有你真心的面孔
让我们的笑容 / 充满着青春的骄傲
让我们期待明天会更好
——《明天会更好》(罗大佑,1985)2024 is the year that half of humanity goes to the polls—and all of humanity will be affected.
I stand before you in this whirlwind convinced of two overriding truths.
First, the state of our world is unsustainable.
We can’t go on like this.
And second, the challenges that we face are solvable.
But that requires us to make sure the mechanisms of international problem-solving actually solve problems.
——联合国秘书长安东尼奥·古特雷斯向联合国大会的报告(2024 年 9 月 24 日)
2024 年必然是世界历史上可圈可点的一年——人类的一半前往投票站(Half of humanity went to the polls;我思前想后还是决定直译)。人们满怀期待地进入这史无前例的一年,带着对更好的明天的憧憬。
这一年,我也更加关心时事了。一方面,是因为高考之后空闲时间变多了;另一方面,是因为这一年太不寻常。
当每个人投下自己的一票时,相信也是带着“明天会更好”的渴望的。于是,反现任(anti-incumbent)情绪高涨,许多国家的民众想换人做做看。不过,与此相伴的,是许多波折,以及许多持续到今天的困惑。现在我们可以说明天会更好了吗?不见得。
我们只好带着今天的一切——憧憬与担忧,兴奋与失落,期待与困惑——走向明天。明天不会太好,但我们仍然要在磕磕绊绊中创造一点一滴的美好。
说着说着,明天就要来了——
在这里祝大家蛇年快乐!
2025 年 1 月 28 日
甲辰除夕
期中考后,微积分课开始讲积分。出于好奇,我阅读了 Pete Clark 所著 Honors Calculus(这个 PDF 版本有许多笔误,似为草稿)的第八章第 1、2、4 节。为了理解部分内容,我还阅读了第六章第 4 节对实数归纳法的正确性的证明。以下为我的笔记,第 1、2、3 节分别对应原书第八章第 1、2、4 节。也可以作为该书这一部分的浓缩版。
我们希望
(I0)
a)
b)
我们希望我们定义的定积分满足以下性质:
(I1) 常函数
(I2) 若
(I3) 若
现在,我们假设 (I0)、(I1)、(I2)、(I3) 均成立。
定理 1(微积分基本定理) 设
a)
b) 若
c) 若
证 由 (I0),存在
因此,下面假设
a) 任给
再设
于是
现在假设
b) 由于 $f$ 在 $c$ 处连续,任给 $\epsilon>0$,存在 $\delta>0$,使得 $|x-c|<\delta\implies$ $f(c)-\epsilon<f(x)<f(c)+\epsilon$。故
于是
这表明
c) 已知
注 定理 1 表明,在我们的假设下,若定积分存在,则它是唯一的,即
下面,我们将逐步构建满足假设的定积分定义。但为了叙述方便,我们暂时只讨论在包含于定义域
我们先给出划分的定义:若实数
我们将可积定义为:存在唯一的
这一定义没有很好地形式化,它对最重要的部分——
例 1 显然函数
例 2 设函数
证 首先注意到,对
例 3 设
证 由于每一个子区间都既包含有理点,又包含无理点,对
注 此例可能提示了解决
接下来,我们将给出达布积分的定义。
设
引理 4 若
证 令
对
引理 5 若
证 由引理 4,若
命题 6 设
a)
b)
证
a) 由
b) 与 a) 同理。
定理 7(达布可积性判定) 对
(i)
(ii) 任给
(iii) 存在唯一的实数
证
(i)
任给
(ii)
已知对任意
(i)
由于
(iii)
反证法。假设
接下来,我们证明达布积分满足假设 (I0)、(I1)、(I2)、(I3)。证明达布积分满足 (I0) 的 a) 部分需要用到实数归纳法。
定理 8(实数归纳法) 设
(RI3) 对任意
则
证 反证法。记
(I)
由 (RI2) 知存在
(II)
由
综上,假设不成立,
定理 9(积分主定理) 达布积分满足假设 (I0)、(I1)、(I2)、(I3)。
证
(I0)
任给
最后,我们给出黎曼(Riemann)积分的定义,并证明达布积分与黎曼积分等价。
设 $\mathcal P={x0,\,x_1,\,\dots,\,x_n}
定理 10 对
证
必要性:
假设
充分性:
假设任取
注 定理 10 给出了达布可积性的一种全新的判定,使我们离给出与达布积分等价却截然不同的另一种积分定义——黎曼积分——更近一步。我们还需要做两件事:一是证明定理 10 给出的判定条件中的
称划分
引理 11(细划分引理) 若
有了细划分引理,我们终于可以完成剩下的任务了。
设
定理 12(达布积分与黎曼积分的等价性) 设
a) 下列命题等价:
(i)
(ii)
b) 在 a) 的等价条件成立时,
证
a)
(i)
反证法。假设
(I)
设
(II)
设 $n\in\mathbb N+
b) 由 a) 的 (ii)
推论 13 黎曼积分满足性质 (I0)、(I1)、(I2)、(I3)。
推论 14 黎曼积分满足微积分基本定理。
我们终于大功告成。
XCPC 队(不说“ACM 队”了,严谨一点)本来要训练的,突然因为停电取消了。正好,到图书馆复习去,CCF 算法能力大赛(CACC)明天就比赛了。
发现模板缺了一页,赶快打印。工程题有一道样题要用 A* 算法,于是迅速学了一下,写了道模板题,也把代码打印了出来。
考点在厦门理工学院,离这里三十几公里。规划了一下交通方式,大概是在先坐公交车去翔安的中心,再从那里打车去考点。经过一番计算,我把闹钟设在 06:40。把考试要用的东西都准备好了,也买好了早餐。给手机充满了电,不然回不来了就尴尬了。
06:45 起床。带着书包和早餐下楼,在那个“一站式”房间吃早餐。想来这已经是我第二次做这种操作了,第一次是在考数学竞赛的时候。
骑车去南门坐公交车。好冷啊!
到南门正好看见我要坐的那辆公交车正在驶来,赶快往车站跑,然后坐上了。这时还没到 07:20。
07:55 在汇景广场站下车。然后打车。由于刚才运气好恰好坐上了公交车,现在的时间还很充裕。
08:25 打到车,直奔厦门理工学院。听司机说厦门理工学院的思明校区已经没有了,现在只有集美校区。司机说不要说南门,要说是正门还是侧门,因为他“在厦门二十多年就没认清过东西南北”。我说我以前在广州也是这样。
到厦门理工学院的时候还没到 08:50。20 公里出头,车费 63.5 元。
凭身份证和准考证进去了。——怎么现在大学校园都不开放了?——找到那栋楼,发现除了入口处的一张小小的 A4 纸之外没有任何标识,直到上了考场所在的二楼,才有这里正在办比赛的迹象。把文具、模板、水和几根香肠带了进去。
09:30 开赛。怎么题目点不进去呢?原来连续多点几次就可以了。赛氪 OJ 的提交界面默认选 C 语言,而且每次刷新都会恢复,要时刻注意语言有没有选错。
第一题是约瑟夫问题,一开始想写暴力,写到一半发现时间复杂度不对,改成了用 std::set
维护当前剩下的人,顺利地过了。第二题要我们求一个数组中间挖掉连续的
剩下两道常规算法题和一道工程题。工程题一题 200 分,但是我从来没做过,连这次考试之前也没做,因为在忙着别的事。看第三题。这是一道数据结构题,修改是给一个区间内的奇数或偶数加上一个数,查询的是一个区间内所有数的和。70 分只需要
我似乎想到了一个线段树做法,也就是每个节点记录区间内的数的和,奇数个数,以及两个懒标记(这个区间的和总共需要加多少,以及是否经历”奇数+奇数“操作使整个区间变成奇数或者偶数)。于是我开始写,写到一半发现假了,因为懒标记传不下去。如果懒标记分别记录这个区间经历的“奇数加一个数”操作和“偶数加一个数”操作之和呢?等等,这个操作有后效性,好像是没办法随便求和的,然后下传的时候还要和下面的小区间的懒标记叠加,好复杂啊。
于是我决定放弃线段树,改成分块,心想
写完的这份代码和暴力对拍对上了,遂提交,结果发现 0 分。继续对拍,没发现会出问题的数据。奇了!这是什么错误,怎么拍不出来啊。(顺便吐槽一下,机子好慢。)这时候我又看了两眼草稿纸,突然发现问题:刚才线段树写不下去,不是因为这个操作没办法随便求和吗?那我现在怎么还在直接把奇数的操作加起来?我还在草稿纸上写“两次块内操作之间块内的数奇偶性不变”,它明明会变啊,在奇数被加上奇数的时候,整个块就变成偶数了。——等等!我明白了。“奇数+奇数”是一个临界点,一旦出现这个操作,后面的就都是对所有数的操作了,很好处理,搞一个标记专门记录后面这些操作就行;而在出现这个操作之前,块内的数的奇偶性不变,按照原来的方法直接加就好。改了一下再交,果然过了,最慢的点跑了 1.8 s 左右,那还挺快的嘛。
(其实这个做法离线段树做法只有一步之遥——只需要搞清楚一个节点的懒标记怎么叠加从上面传下来的懒标记就好。不过我是考完试才意识到这一点的。)
这时是 14:20。先看工程题吧,暴力留到后面写。工程题要求你实现尽可能好的在物理主机上开虚拟机的算法,每个主机和虚拟机都有两个参数 priority_queue
,没错,删除的时候堆里的直接不删了。更有甚者,我的 priority_queue
的比较函数直接访问外面的数组,而外面的数组是会变动的,UB 是必然的,但我不想管这些了,我对工程题的预期是能拿到分就不错了。
事情还没完,那个 priority_queue
访问了外部数组(其实是 std::vector
),也就是要我们写的那个类的成员,结果编译器说不是 static 的不能访问。改成 static 的,它又报一堆神秘错误(说 MinGW 里面哪个文件出问题了那种)。就这么反反复复改了好多次都不行。我最后只好把那个数组改成全局的。
工程题的测试是本地给你一个测试程序和 20 个测试数据,让你测试好再交,和前面的题不一样,只能交 3 次。结果出问题了:那个测试程序跑不起来。对着它的代码研究了足足二十分钟,发现它用的是 Linux 路径,和 Windows 路径相比多了个 ../
。
改了路径之后它能跑了,然而只有二十多分。我改用 set
,这下可以删除了,但还是一个样子,有些测试点是 0 分了。我应该确实写出了很多 UB,但可能也有别的问题。但这时候已经 16:50 了,我还有第四题的暴力没写,不可能再调了。把那三次提交机会用完,最后得了 17.5 分。
有一件很有意思的事:吃完饭之后,考场里的人就陆陆续续提前交卷了。在 15:30,整个考场好像只剩 3 个人了。我交完工程题是 16:55,这时整个考场只剩我和我右边那个人。但我不能走,我现在有 317.5 分,最后 35 分钟最好能拿到第四题第一档的 25 分。
这个输入格式好阴间,又要 getline
又要 sscanf
,还要特判。既然要找对子、三张和顺子,那就给扑克牌按点数排序,然后 DFS 吧。在 17:10,我右边的人也走了。我写完代码已经是 17:20 了,交上去只有 20 分,第一个点错了。到 17:25,我才发现,题目规定,虽然以 A 为最大牌的算顺子,但 A2345 也算顺子。但排序把这个顺子拆散了,要改没有 20 分钟是写不完的。
于是我离开了考场,得分 337.5/600。
离这里 2.2 公里有一家麦当劳,去那里吃饭吧。这里是郊区的常见景象——高压电塔和电线,破旧、零碎的房屋,以及公路上奔驰的汽车。而给人走的路都不好走。
走了一段路,来到了一个公交车站,在公交车上往前坐了一站,然后下车找那家麦当劳。麦当劳在一座商场里,商场的建筑如城堡般美轮美奂,与外面的了无生气的景观放在一起,难免给人错愕之感。
在群里听说工程题“随随便便就能 120 分”,难道真的是我的代码里有什么低级错误?如果我分配多一些时间给题面很吓人、我也毫无把握的工程题,会不会就上 400 分了?可能吧。不过比赛没有“如果”。
麦当劳很好吃。——可是怎么有人在麦当劳的座位上用电脑写着论文啊?
不过,我也得赶我的微积分作业了。
拼尽全力赶微积分作业,但由于早上还有生物课,最终还是没能赶上,迟交了两个小时。
CSP 认证的报名显示“审核通过”,这下放心了。我一直在担心他们会因为我不是信息学院的而不给我通过审核。
开始做英语翻译作业,以及英语翻译比赛的题目。
做完英语翻译作业。
突然发现定向越野课的期末考试(直接拉我们去思明校区参加某个比赛作为考试)就在 CSP 认证那一天,还好是早上,不过又得规划交通方式了。
早上没有课,吃午饭前做完了英语翻译比赛。
晚上还要抄到翻译纸上。
抄英译汉的最后两段,用扫描全能王扫描,在 14:40 提交到了比赛网站上。此时距离截止时间只有 20 分钟。
早上去思明校区踩点。思明的地形好复杂,希望明天定向越野不要迷路。顺便测试交通方式,比我想象中麻烦,明天得多花些车费了。
14:30 才去到 XCPC 训练室,门还锁了,于是大家都知道我迟到了。做 ICPC 沈阳站的题目。题目太难了,到 18:00 只做出 2 题(J 和 D),与上上周桃园站的 8 题形成了鲜明对比。
晚上在图书馆看到一本新书《唐人街:深具社会经济潜力的都市族裔聚居区》。其实那是一本 1992 年的旧书,由美国华人周敏所著,原标题为 Chinatown: The Socioeconomic Potential of an Urban Enclave,而这本 30 周年新译本由她的同为美国华人的丈夫郭南翻译。它的内容是对美国唐人街的研究,甚合我意,遂借走。
06:15 起床。吃早餐,坐学校给提供的大巴去思明参加定向越野比赛。我跑第一棒。
09:17 鸣枪开跑。前几个点看哪里人多就往哪里跑。但我一开始嫌大家排着队打卡太耽误时间,就跳过了一个点,去跟已经在找其他点的人。前 9 个点都很顺利,但我发现我找不回我跳过的那个点了。然后看地图,转了好久,才大概确定那个点在哪里。回到运动场已经是 09:59 了,拖累了队友,很惭愧。
原来说 10:57 关门的,后来主办方发现这么搞的话有成绩的基本都有奖了,换言之没奖的基本都没成绩了,就延长了 20 分钟。
11:10 出思明校区校门,打车去海边的小东山地铁站。希望这时候他们已经跑完了,我想。
坐上跨海的 3 号线之后,第三棒的队友在 QQ 上跟我说我们差一点就没成绩了。想想都后怕。
12:05 左右从塘边站出来。去旁边的村里吃了碗汤米粉。那家店给它取的名字非常简朴,就叫“汤米粉”,拿到之后才知道里面是个大杂烩,肉菜非常丰富,而且只要 15 块,很划算。
12:45 从另一边出村,叫了辆出租车,直奔考场旁边的西门。13:11 下车。
到 13:30,考场的门还没开。监考老师迟到了!等到 13:47,有人输对密码打开了门,但监考老师还是没来。然后我发现我的座位的显示器和电脑没连上,搞了半天都搞不好,只好换一个座位。
到 14:05,监考老师还是没来!但本校大佬 ZPC 来了,把考试的网址告诉了我们,然后跟我们说不要上其他网站,否则可能会被视为作弊。登上考试网站之后,发现考试被推迟到 14:30 开始,推迟了整整一小时。
这时候我发现一个严重的问题:我在电脑上找不到任何 C++ 编译器!然后我又发现那个网站上不去了。我举手跟 ZPC 说网站上不去了,ZPC 也没有办法,打电话叫监考老师过来。他过来之后叫我再换一台电脑。
换了电脑,比赛快要开始了。我又开始寻找 C++ 编译器。这时候我下载了一个 MinGW64。14:30 题目发了下来,第一题一看就是大水题。然后我发现那个 MinGW64 好像是假的,但监考老师在这里,我不敢再访问任何不属于比赛系统的网页了。经过一番搜索,我发现某个角落(好像是 Matlab 软件里面吧)有个 MinGW64,里面有 g++。时间已经过去很久了,我急着拿分,看了第一题的大概意思,是一个东西在网格上按照要求移动,就写了个程序,直接拷到编译器的文件夹里,试着编译。结果一件神奇的事发生了:那个编译器可以判断我的程序是否能通过编译,如果不通过也会正常给出错误信息,但它不愿意给我真正编译出 .exe 文件,而是在返回的信息的末尾吐出一堆奇怪的错误信息!换了好几种编译的方法,无果。先直接把这个程序交上去吧。交上去发现 50 分,果然我的注意力都在编译器上了,根本没认真读题,题目说了“超出边界就不动”啊。改完就 100 分了。问题来了,接下来怎么办?用 Python 写吧,报名的时候我编程语言选的是“全部”,我已经不是只会一种编程语言的人了。
对了,怎么连草稿纸都没发?不过允许带纸质资料,我也确实带了,于是我的纸质资料的空白处就成了草稿纸。
这时大概是 15:10。第二题大意是一个人沿着一条链从头走到尾,在每条边上要消耗能量,在每个点上会补充能量,给你每条边和(除起点外的)每个点对应的消耗或补充的能量值,问在起点处至少要有多少能量才能让能量值在整个过程都不会小于零。把那个形如
看第三题,发现是题面超长的大模拟,看着就不想做,先看别的题吧。第四题叫“跳房子”,题面很短,输入是两列数。我眼前一亮,估计是 DP。第五题感觉很神秘。
读第四题,它说一个人沿着一列格子跳,第
于是写了一个线段树,但是常数巨大,因为每个节点是用 tuple 存的,而众所周知 Python 的 tuple 只能整体赋值。为了优化常数,我把节点里的 l, r 去掉,而且不再用 tuple 存了。这时候我突然发现我在下传懒标记之后没有把它取消掉,虽然这在这道题里没有错,但这么一来那个懒标记为
(考完我才发现,我在每个节点多存了“区间的最小值”的信息,明明只有单点查询啊,只存懒标记不就好了吗……把这个数组去掉说不定 Python 也能过……)
这时已经 18:00 了。我想冲一冲第三题,打个暴力分也好,但第三题的题意实在太复杂了,我到了 18:20 还差好多才能写出最朴素的做法。判断出自己不可能在剩下的 10 分钟内写完剩下的部分之后,我转而去看第五题,但照样写不完。最后两分钟试着骗了骗第三题的分,无果。然后就结束了,得分 300/500。
感觉不太满意啊,剩下两题的部分分没拿到,明年春天再来吧。还有,我们学校的组织真的一团糟,从推迟考试(是忘记今天有考试了吗),到不发草稿纸,从电脑的硬件问题,到电脑里残缺的编程环境,到处都是问题。以后得做好心理准备了。
晚上去肯德基吃饭。回去还有微积分作业,还有实验报告,还有乐跑。
单周,早上没有生物课。
乐跑。然后去图书馆赶微积分作业和实验报告。分部积分有些题目得连着写十个等号,好壮观啊。
为了补作业,我中午连饭都没吃,下午微积分课课间把前一天买的三明治吃了。但微积分作业还是迟交了一个小时。
然后就是实验报告,我直到晚上上课的时候还在补。晚饭也没有正常吃,是快上课的时候靠几根香肠解决的。下课后我跑着去打印实验报告,交到办公室的时候离 22:00 的截止时间只有 5 分钟。
这个忙碌的周末总算结束了。
晚上 CSP 出成绩单了。这次的平均分是 164,较迄今为止所有场次的平均分高 20 分,看来是偏简单的。300 分能排到前 6.34%,希望下一次能更好。
CACC 榜怎么还不出啊?
就以此作为这个博客的第一篇文章吧。
建站第一天,用 NexT 的 math
字段配合 hexo-filter-mathjax 与 hexo-renderer-kramed 配置了 MathJax 数学公式。这里测试一下 MathJax 渲染。
对