大码农题做题体验

囧仙

2020-10-20 23:09:51

Personal

## 前言 - 这篇文章主要记录了某位囧仙中之人写大模拟题的做题感受。这里的大模拟题主要来自[码农题题单](https://www.luogu.com.cn/training/3210),感谢题单作者的整理。 - 蓝题以下的码农题不够码农,可能并不会怎么去做。 - 因为这篇文章主要是讲了作者的做题感受,所以并不会很详细地讲述具体题解。仅供 $\stackrel{\text{偷税}}{\text{愉悦}}$ 。 - 本文会对做过的题目进行难度的个人评判,分为 $5$ 级,等级越高说明越难。不过评分仅供参考。 本贴将会**持续更新**。 ## 更新 - $\frak{upd.2020.10.20}$ 写下了这篇文章,并写了三条记录。 - $\frak{upd.2020.10.26}$ 第一次更新了文章,新增了两条记录。 - $\frak{upd.2021.7.15}$ 第二次更新了文章,新增了三条记录。 - $\frak{upd.2021.7.30}$ 第三次更新了文章,更新了一下最近做的申必模拟题。 ## 正文 ### [[NOI2005]智慧珠游戏](https://www.luogu.com.cn/problem/P4205) 达成时间 $\small\texttt{2020-05-24 20:08:19}$ #### 体验 嘛,当时看题的时候还是黑题,等做完了,发现它降成紫题了(悲)。然而并没有改变它的毒瘤本性。 $$\textbf{“小时候你玩智慧珠,长大了智慧珠玩你”}$$ ——来自题解区第一篇题解 虽然说是码农题,但意外的简单。做法和隔壁的[靶形数独](https://www.luogu.com.cn/problem/P1074)差不多。~~虽然程序还是超时了好几次,然后用了点奇技淫巧过了~~。主要难写的是珠子的输入。题解区的题解大多花了巨大的码量去输入珠子。 但我寻思直接压缩一下不就完事了…… 后来嘛,用 $2\rm KB$ 不到的代码就直接 $\rm AC$ 了。顺便写了篇[题解](https://www.luogu.com.cn/blog/_post/241153),通过私信管理员丢到题解区了。 #### 评价 - **码量**:$\texttt{II}$ 级。虽然很多题解码量巨大,但只要掌握了方法,轻轻松松敲完……某种程度上这题算不上码农题。 - **思维**:$\texttt{III}$ 级。如果你直接用爆搜的话,那就没啥思维难度。不过考虑到存储珠子需要一定的思维,我认为这题思维难度还不错。如果你追求速度,可以考虑使用 $\text{DLX}$ 解题。 - **调试**:$\texttt{II}$ 级。因为码量低,所以调试起来自然比较方便。 - **总评**:$\texttt{III}$ 级。是一道不错的小清新码农题,建议敲完靶型数独来看看。 --- ### [[THUPC2019]鸭棋](https://www.luogu.com.cn/problem/P5380) 达成时间 $\small \texttt{2020-06-03 23:49:41}$ #### 体验 题面很长,但棋子间的操作相互独立,其实分成若干个子问题的话挺容易写的。题目只要求判断走棋是否合法,因此相当容易。 听说出题人做了个鸭棋的小游戏出来, $\%\%\%$ 出题人。 主要就是加上各种各样的特判,其实没啥内容,纯粹拼的码力。样例给的很良心,基本上大多数错误都能查得出来。由于题意简单,因此比较容易调试,是一道良心题。 #### 评价 - **码量**: $\texttt{III}$ 级。我当时写了 $\rm 3.5+KB$ ,其实还可以进一步压缩。码量大于智障珠,但意外地好写。 - **思维**: $\texttt{I}$ 级。普及组选手都能想到的思路,随便写写就完事了。 - **调试**: $\texttt{II}$ 级。样例相当给力,很多错误也能肉眼看出来。各个规则互相独立,不会导致牵一发而动全身。 - **总评**: $\texttt{III}$ 级。这题主要难就难在巨大的码量,但除此之外没啥难度了。 --- ### [P2482 [SDOI2010]猪国杀](https://www.luogu.com.cn/problem/P2482) 达成时间 $\small\texttt{2020-10-18 23:53:50}$ #### 体验 经典 $\rm ao$ 题,当我还是初学者的时候就久仰大名了。可惜当时还是黑题,现在降为紫题了(悲)。但这并不妨碍这条题目的毒瘤本性。 好像题面被人规范过了,看起来比远古时期的题面清爽多了。由于这个屑没有玩过三国杀,导致他理解了相当长时间题面(悲)。 其实这题主要就是各种各样的细节,令人恶心的细节,相当的恶心。比如说,你得在各种时候特判是否有玩家死亡,特判每张锦囊牌发动前有没有玩家打出无懈可击,有没有牌的使用使得你需要重新枚举一遍玩家的手牌…… 数据相当的水,复杂度飞上天际的算法都能通过,可见出题人的良心(迫真)。 调试起来极为痛苦。由于各种规则交织在一起,导致盯着一面数据看了半天……做题体验极差。我记得我因为忘记使用一张牌后,可能要重新扫描手牌,导致调了一晚上…… #### - **码量**: $\texttt{III}$ 级。我的初稿写了 $\rm 5+KB$ ,虽然后来优化到了 $\rm 2.5+KB$ ,但依然相当不好写。 - **思维**: $\texttt{III}$ 级。需要选手想出一套可行的方案并实现,实际上还是挺有难度的。 - **调试**: $\texttt{IV}$ 级。地狱一般的调试,相当磨砺人的信念。 - **总评**: $\texttt{IV}$ 级。就光着做题体验,就足够评这么高的分了……及其难受的一段经历。 --- ### [P4911 河童重工的计算机](https://www.luogu.com.cn/problem/P4911) 达成时间 $\small\texttt{2020-10-25 12:15:42}$ #### 体验 是条以车万为背景的题,这是好的。 我记得好久之前就看过这条题目了。但因为读不懂 $\verb!@%XXX!$ 地址的含义,导致这题搁置了好久()如今重新回顾,居然就看懂了。 其实这题看上去吓人,但操作还算比较简单,因为每个指令都以分号结尾。高度格式化的输入数据也使得操作起来很容易。出题人写的标算更加可读,也导致码量膨胀。 ~~然而为了追求输出速度,我用了快速输出,结果在 $\sout{-2147483648}$ 转为正数时溢出了,非常谔谔~~ 体验不算糟糕,就是 $\rm PDF$ 翻了一遍又一遍挺麻烦的。 - **码量**: $\texttt{IV}$ 级。绝对可以算得上是大码量题了。像我这种压行壬,居然还写了 $100$ 行,共 $\text{4.70KB}$ 的代码,毒瘤出题人恐怖如斯。 - **思维**: $\texttt{III}$ 级。要求选手设计一套可行的汇编程序解释器,思维其实并不算太难。大概中等水平的样子。 - **调试**: $\texttt{III}$ 级。调试还好,~~主要是因为你能在出题人的主页里下到所有数据~~。但由于码量巨大,实际调试也挺难受的。 - **总评**: $\texttt{IV}$ 级。走向未来程序改的第一步,可惜数据有点水了。 --- ### [P5756 [NOI2000]程序分析器](https://www.luogu.com.cn/problem/P5756) 达成时间 $\small\texttt{2020-10-25 23:56:20}$ #### 体验 刚做完河童重工的计算机,就来看这道题了。~~其实是因为隔壁 $\sout{\text{CYaRon!}}$ 语调不动了。~~ 题面描述的挺格式化的。要求选手支持的操作也挺少,没啥难点。总体体验还行。 然而并不是。因为我太菜了,在判断 $\rm END$ 、 $\rm IF$ 和 $\rm GO$ 语句时,直接判断了第一个字母是否符合要求。然后我忘了变量名称也有可能是 $E,I,G$ ,然后调了半天,心态爆炸。 然后我看到 `假设该系统能处理任意大小的整数,而不会发生溢出。` ,就以为要用高精度,调了半天,再次心态爆炸。 明明是一道水题,为什么我会这么菜呢(悲) - **码量**: $\texttt{I}$ 级。~~不会吧不会吧,真会有人把这题看作码农题吗?~~ 要求支持的操作相当少,变量相当简单,使得码量也很小。才 $\text{1.24KB}$ 就写完了,根本不过瘾啊(恼) - **思维**: $\texttt{II}$ 级。并没有什么难的,只要熟练运用 $\texttt{scanf}$ 就能完成所有读入了。 - **调试**: $\texttt{II}$ 级。数据简单,也容易调试。 - **总评**: $\texttt{II}$ 级。非常简单的一条题目。由于截止到目前该题尚未评分,我这边给出的参考评分是绿题。毕竟,这题某种程度上比隔壁的时间复杂度简单一些。 --- ### [P7075 [CSP-S2020] 儒略日](https://www.luogu.com.cn/problem/P7075) 达成时间 $\small \texttt{大概是 2020-11-07 左右}$ #### 体验 $\verb!CSP-S2020!$ 的巨大多毒瘤签到题!差点就被它橄榄了!(其实完全没有被橄榄吧……)放在这篇大模拟收录里,只是因为它对于很多选手确实很模拟了。 其实如果你不贪心,拿 $\verb!Day by Day!$ 去做已经可以得到很高的分数了。对于后面的一部分分数,就没有什么太多需要讨论的地方了。我的做法是迫真倍增,主要是为了保险起见防止我写挂爆零() 个人评价不是一道很难的题,但是真的放在 $\verb!CSP-S2020!$ 又是签到题的位置,那就算不上是好题了。 #### 评价 - **码量**: $\texttt{II}$ 级。赛时代码写了 $\text{1.72KB}$ ,与一些简单的模拟题其实差不多。 - **思维**: $\texttt{II}$ 级。想到 $\verb!Day by Day!$ 大概就能做出来了吧……但是如果你没怎么接触过这种东西,可能还是有点难度的。 - **调试**: $\texttt{II}$ 级。一共花了一个小时就调完了,其实属于比较正常的程度。毕竟,我第三第四题调的时间都比它长() - **总评**: $\texttt{II}$ 级。一般般。当作普通的模拟题其实挺好的。 --- ### [P4997 不围棋](https://www.luogu.com.cn/problem/P4997) 达成时间 $\small\texttt{2021-04-08 19:12:19}$ #### 体验 某种程度上,这不算是大模拟题吧……? 其实做法大概就是弄个并查集瞎搞搞,就做完了。我也不知道为啥我因为一些小错调了半天。果然我还是太菜了。关于这题,我写过一个[题解](https://www.luogu.com.cn/blog/_post/325820) ,可能还有些想说的话在这里面,我就懒得搬运过来了() - **码量**: $\texttt{I}$ 级。略微长于程序自动分析,但主要长度就在于比较麻烦的细节问题。一共只写了 $\text{1.27KB}$ ,完全看不出来是个模拟题呢。 - **思维**: $\texttt{III}$ 级。只要想到并查集,大概就能全部做完了。因此并不算得上是很难的题。 - **调试**: $\texttt{III}$ 级。不知道为什么,我调了半天()可能还是细节比较多吧。 - **总评**: $\texttt{II}$ 级。非常简单的一条题目,你甚至可以把它当成并查集练习题来做。 --- ### [P3693 琪露诺的冰雪小屋](https://www.luogu.com.cn/problem/P3693) 达成时间 $\small \texttt{2021-07-15 19:48:34}$ #### 体验 非常有感触的一条题目。 从第一次接触到“大模拟”开始,我就已经见到过了这题(大概是好几年前的事情了……)中途其实陆陆续续写过了好几次(不少于三次),最终大多以**看不懂题面**而告终。虽然⑨屋一直放在任务计划里,但一直就没写过去。 事情的转机在于联系上了出题人,经过一番亲切交流,我终于弄懂了这篇题目!终于,在七月十四日我开始着手最后一次重构代码。然后调了一半不想调了,就去摸鱼了()直到第二天下午我终于下定决心把它完全调掉了。 主要难点还是一大堆判断句写起来很麻烦吧。有一说一,在 $\verb!MAKE_ROOF!$ 这个毁天灭地的操作出现之前,这题都可以算是非常简单的(顶多绿题左右),但是加了 $\verb!MAKE_ROOF!$ ,它的难度直接上升了 $10$ 倍甚至⑨倍。这也是本题最大的难点。 我单方面硬点它是洛谷最谔谔的大模拟题() #### 评价 - **码量**: $\texttt{V}$ 级。写了整整 $\text{5.80KB}$ ,是我**迄今为止**写过的最长的程序了。这题细节之多令人发指。 - **思维**: $\texttt{III}$ 级。其实并没有那么容易完全想通透。由于柱子、墙面什么的细节一大堆,因此你不得不考虑考虑如何解决这些问题。尽管整体而言的思维难度并不高,但是细节是真的恶心。 - **调试**: $\texttt{IV}$ 级。调试了相当长的时间,如果没有下载数据我可能还要再摸索一两个小时()同样地,由于细节较多,因此调试起来比较麻烦。 - **总评**: $\texttt{V}$ 级。我不想再做第二遍这样的题目了() ### [P2586[ZJOI2008]杀蚂蚁](https://www.luogu.com.cn/problem/P2586) 达成时间 $\small \texttt{2021-08-27 15:08:06}$ #### 体验 其实这条题目从某种程度上题意是非常清晰的(至少比隔壁捕鼠行动清晰多了。至少这题详细说明了一秒内发生的事件的顺序)。然而仍然因为一车申必错误调了好长时间 \yun。 这次第一次尝试使用了一大车 $\text{string}$ 而非使用手写的 $\text{C}$ 风格字符串。同时也尝试使用了 $\text{C++11}$ 标准的东西,深刻感受到 $\text{C++11}$ 和 $\text{STL}$ 的先进,以及西西弗至今还在用 $98$ 的申必() 但是感觉这题没啥新颖的东西呢。顶多是处理一些比较简单的解析几何。 #### 评价 - **码量**: $\texttt{III}$ 级。就写了 $\text{2.5KB}$,完全不过瘾呐! - **思维**: $\texttt{II}$ 级。题意非常清晰,只要按照上面的要求一步步来就行了。稍微有点思维的就是解析几何部分,但也相当简单。 - **调试**: $\texttt{III}$ 级。因为不支持下载数据,所以只能一遍又一遍地检查代码。调试的全过程还是有点谔谔的。以及,这题样例过于水,导致很多错误不大容易查出来…… - **总评**: $\texttt{III}$ 级。毕竟是非常经典的大模拟题,整体感觉还可以。 ### [P1039 [NOIP2003 提高组] 侦探推理](https://www.luogu.com.cn/problem/P1039) 达成时间 $\small \texttt{2021-08-28 08:19:47}$ #### 体验 为啥这题会放置在大模拟题单里,我暂且蒙在鼓里。感觉是一道挺水的题目,主要考察了选手对于字符串的使用,以及一些简单的哈希。将题目中提到的几句话原封不动地塞到 $\text{map}$ 里,然后暴力匹配,最后暴力枚举就能做出来了。 #### 评价 - **码量**: $\texttt{I}$ 级。写了 $\text{1.34KB}$,这个码量放在普通题里,感觉都没有任何问题。 - **思维**: $\texttt{II}$ 级。稍微想一想,然后匹配一下就行了。无论从什么角度说都算不上太难。 - **调试**: $\texttt{I}$ 级。因为题目本身就比较简单,所以调试起来很容易。 - **总评**: $\texttt{I}$ 级。当作平凡水题练练手吧。 ### [P1686 挑战](https://www.luogu.com.cn/problem/P1686) 达成时间 $\small \texttt{2021-08-28 09:28:10}$ #### 体验 (注意,该题虽然名字也叫挑战,但是和 $\text{WC}$ 的那条非常卡常的题目是两码事,不要混淆。) 题意非常简单,在二维平面上找到距离每个点上下左右最近的点,然后更新一下答案就行了。因此只要分别对于 $x$ 轴和 $y$ 轴进行排序,接着贪心。不能算得上是模拟题呢,但是还算稍微有点意思。 #### 评价 - **码量**: $\texttt{I}$ 级。写了 $\text{1.68KB}$,也不能算是太长。 - **思维**: $\texttt{III}$ 级。只要想到分别根据 $x$ 轴和 $y$ 轴排序,就能很容易得到本题的正解了呢。 - **调试**: $\texttt{I}$ 级。题意简单,没有什么容易忽略的卡点。 - **总评**: $\texttt{II}$ 级。水紫。 ### [P2229 [HNOI2002]沙漠寻宝](https://www.luogu.com.cn/problem/P2229) 达成时间 $\small \texttt{2021-08-28 12:57:48}$ #### 体验 一条非常基础的模拟简单程序的题目。主要考察了选手对于中缀表达式求值,以及程序结构的理解。因为这题程序的结构比较固定(没有什么空格干扰结构的分析),所以相对而言是入门级别的程序模拟题(至少相对于未来程序改之类的重工业题,这题已经是很简单了)。所以写个中缀表达式求值,然后就是直接模拟程序结构。 顺带一提,之前写这题的时候把 $\text{break}$ 和 $\text{continue}$ 的处理写挂了,居然还拿了 $70$ 分…… #### 评价 - **码量**: $\texttt{II}$ 级。写了 $\text{2.68KB}$。相当于是中缀表达式和程序结构模拟的二合一题,不算太难码。 - **思维**: $\texttt{II}$ 级。主要是中缀表达式方面产生的思维问题。顺带一提,由于该题没有判断语句,所以对于循环结构可以有更加简化的处理方法。 - **调试**: $\texttt{I}$ 级。因为是二合一题,中缀表达式网上又有现成的讲解,不算太难调试。 - **总评**: $\texttt{III}$ 级。非常清新的高级语言程序模拟题。 ### [P5698 [CTSC1998]算法复杂度](https://www.luogu.com.cn/problem/P5698) 达成时间 $\small \texttt{2021-08-28 15:14:35}$ #### 体验 某种程度上,这条题目和沙漠寻宝有些许类似。不同的是,这题需要计算出所有循环语句产生的时间复杂度贡献。 但容易发现,由于这题也没有循环语句,因此可以用一种[很简单的做法](https://www.luogu.com.cn/blog/over-knee-socks/solution-p5698)转化为中缀表达式求值。然后就是套板子了。 #### 评价 - **码量**: $\texttt{II}$ 级。写了 $\text{2.20KB }$。同样不是一个非常难写的题目。由于该题的特殊性质,你甚至不需要完整地写出一个中缀表达式求值。 - **思维**: $\texttt{II}$ 级。能想到把程序看作一个中缀表达式,应该就能做出来了吧? - **调试**: $\texttt{I}$ 级。和沙漠寻宝一样,没有什么非常值得注意的调试点。基本上能过样例就不会有太大问题了。 - **总评**: $\texttt{III}$ 级。~~感觉是沙漠寻宝的翻版~~。 --- 码农题体验,堂堂连载中() ## 后记 - 虽然每条记录看上去都比较简短,但很多题目做起来其实挺累的()少的也有一个小时。 - 其实这篇文章有点像是码农题推荐?读者也可以自己去爆切码农题。相信做完之后你会有不用的感受的。 - 读到这里了,给个赞,或者留个评论,好不好 $\text{QAQ}$ 。