每周总结

20211025~20211031

本周只考了三场模拟赛,但是我场场挂巨大多分,因此特写一篇总结来记下我犯下的憨憨错误。

  • 写代码时不要图省事,比如dp有4种转移时不要觉得全部类似就照抄前面的转移,不要随便增加一些莫名奇妙的特判。代码里的每一句话都是需要过脑子想想有没有道理的。
  • 特别注意边界情况/特殊情况。只要题目中没有明确禁止都是有可能出现的。在图论中的不连通/自环/重边这些元素都需要进行考虑。构造题最关键的是在数很小的时候会不会出错,因为某些构造在很小的情况下本身就是不成立的。
  • 不要过于拘泥于经典套路。不要看到最大化最小值就只会二分答案+验证。并不是说不能这样做,而是在这种方法做了很久都做不出来时需要及时放弃摒弃这一想法。
  • 剩下的就只能是多做题总结经验了吧。

20211101~20211107

本周共计四场考试,但是仍然延续上周的传统做到了场场垫底的优良传统。还是简要记录一下吧。

  • 一些经典的套路还需要积累,如对于多维问题需要考虑到如果每一维贡献独立则可将问题转化为一维的简单问题、原问题困难则思考其逆问题等。
  • 不要因为题目冗长难懂就放弃,可能题目本身其实并没有那么困难。
  • 调试的方法:1.Dev自带的单步调试 2.静态查错 3.自己构造小数据 4.输出调试信息。四种方法都很重要,不要在某一种方法上花费过多时间,而是灵活地运用从而最小化调试时间。
  • 构造题还要多找找感觉,有时候我的做法和正解其实差距很小了,但是就差那么一点点。
  • 考试时有了一定的想法需要大胆地去实现,不要过于执着于证明。(虽然这么说,但是一个不知道正确性的做法写起来还是很虚,这种平衡感还需要好好感觉吧)

20211108~20211114

本周天天考试,真是一言难尽。

  • 思维的熟练度以及严谨性还有待提升。有些时候一个很明显的问题需要思考很久,还有些时候在脑子里想的很清楚(自以为),但是写出来就发现各种假。这就导致有些题没做出来不是不会,而是没有时间了,前面的不太困难的题花的时间太多了。
  • 还是细节需要注意。例如含参方程 \(ax^2+bx+c=0\) 一定要特别注意 \(a=0\) 的情况,此时方程不是二次的。
  • 某些套路还是需要反复复习,有些东西如果一段时间不碰就会忘记。
  • 遇到某些特别新颖的题目时不要慌乱,而要去冷静分析其性质。大多数情况下当把外壳剥开后里面还是基础的东西。
  • 当发现从正面入手解决问题十分困难时可以考虑换一个角度思考问题,包括从反面入手,将问题转置,考虑增量法等。
  • 本周还学到了一些比较新颖有趣的方法和技巧,具体可以参见题解。

20220228~20220306

  • 有时需要将题意进行简化/转化从而更方便地解决问题。不过不要过于盲目地去转化,有时候原问题可能本身并不复杂,转化后反而变复杂了。
  • 树形dp状态设计只有3种:1.关于子树 2.关于从当前点到根路径 3.关于整棵树除子树外的部分。转移仅有两种方式:1.一棵一棵地合并子树 2.考虑将所有儿子同时合并。
  • 数据结构可从贡献方面进行考虑:该修改对所有询问有什么贡献?对于该询问所有修改对它的贡献又是什么?
  • 构造和贪心这种智力题还是感觉好困难啊,感觉没有什么规律可循。现在唯一的方法可能只有多在手玩小样例找找规律。
  • 字符串部分有些遗忘,不过这周做了几道题回忆了以下,感觉还行。
  • 考试策略方面还需提升。具体来说,每道题目都需要留一定时间好好思考才行。

20220307~20220313

本周5场考试一次讲课,人麻了。

  • 重申一遍考试策略:首先花30min将每道题都浏览一遍,注意不能简单地看懂题意就跑路,而是应该花10min左右好好地思考分析。之后再根据思维难度和实现难度去决定先做哪道题。然后每过一段时间都要重新审视策略。最后需要留10min进行检查。
  • 不要因为觉得麻烦就不写暴力/checker。就算暴力很难写,也应该自己手捏几组小样例去测试。
  • 现在求重心已经有3种方法了:1.直接dfs一遍找到 2.沿着重链走 3.从整棵树dfs序的中点(该点一定在重心子树中)向上找。
  • 不必时刻维护正确的东西。一是如果这个东西满足可减性可以及时减去(类似主席树求区间K大值),二是在求最值类的东西时只需要保证最优解一定被取到,对于非最优解只需要保证对应的值不会优于最优解即可,即“虽然不合法,但也不优”。
  • 简化问题时可以考虑将其拆分为稍小的子问题。例如枚举序列分界点做的时候不必每次都对全局做,可以先对每个前缀和后缀做,然后再合并。
  • 限制条件很多时可以将其一条一条清晰地列出来方便分析。

20220314~20220320

  • 边界情况一定需要注意。不仅要看自己有没有判边界情况,还要看边界情况有没有判错(很多时候觉得边界情况很简单就随便写上去了,其实无法保证正确性)。
  • 跑打表程序一定要输出到文件中,没有为什么。
  • 有些区间dp题目伪装成数据结构题目,不要被诓骗,需要仔细甄别。
  • 一些经典的套路不要忘记。例如:求K小值可以二分答案,树上路径问题一定要记得考虑点分治。
  • 一些比较新鲜的思路。例如:如果确定大小关系比较困难可以考虑随机二分,复杂度仍然为 \(\mathcal O(\log n)\)
  • 本周考试策略把握较好,没有向先前那样死磕一道题,而是尽量地去多拿分。希望之后继续保持。

20220321~20220327

  • 考试时一定要把注意力放在题目本身上,而不要思前想后被其他东西所扰乱。
  • 思考和写题应该是两个独立的过程,不应该有交叉的部分。写题的时候要完全按照先前的思考来,一定不能一边写题一边想,这样非常容易混乱以致于出错。
  • 个人认为博弈论、贪心和数点问题转化等方面有欠缺,还需要多补一补。
  • 多变量问题是难以处理的。遇到这种问题应该尽量将它们化为单变量问题。对很多东西同时的限制也是难以处理的,应该将其转化为对单个东西的限制。
  • 当题目中有非常奇怪的部分时,要么将这部分通过转化给消去,要么充分利用这一部分从而得到做法。

20220328~20220403

  • 动态规划的优化仅仅对着柿子优化是不够的,有时候还需要跳脱出来对题目性质进行分析从而得到更优的复杂度。
  • 本周学会了线段树维护区间历史版本和,填补上了漏洞。
  • 对01Trie这种数据结构还不够熟悉,考场上推的时候竟然忘记了其高度只有 \(\mathcal O(\log V)\) 这一性质。
  • 对动态规划的信仰还不够虔诚。很多时候能动态规划的问题都被一句“这怎么能DP”糊弄过去了。以后还是要认真思考后再确定一种做法是否可行。
  • 对一堆仅有总长有限制的字符串排序不要直接用 \(\texttt{sort}\) 。要么 \(\texttt{shuffle}\) 后再 \(\texttt{sort}\) ,要么用 \(\texttt{stable sort}\)
  • 画图以更形象地理解问题这种方法不应忘记。
  • 二次方程不能直接因式分解可以考虑求根公式。(真不知道我考试时有多憨憨)
  • 一个问题它被加强地越复杂越说明它本身的最终形式很简单(虽然推导不一定简单)。在找到简单形式前不要盲目地去尝试加强。

20220418~20220424

虽然这周还没结束,但还是写了吧。

本周主要是把联合省选的题目全部改完并且都写了题解。感觉到这些题目虽然都没有涉及到很偏的知识(基本上都在考纲内),但还是有许多很有趣的idea。与此同时,也暴露了我对树上路径问题、二分图匹配的建模以及括号序列转树等的不熟悉,以后需要进行加强。

接下来,我需要尽快建立自己的思维方式与知识体系,让想题的过程变为机械化的过程而不是靠时有时无的感觉。虽然很困难,但还是尽量做吧。

20220425~20220501

  • 不仅可以对序列分块,也可以对值域分块或对操作分块。
  • 求最值(以最大值为例)时,对于非最大值的数,即是我们在计算时将其算小了也是可行的,只要保证最大值能被算到就行。
  • 最小割的定义:将 \(S\)\(T\) 分开所需要割的最少边数。如何构造?在最后一次bfs后的残量网络上遍历每条边,如果它一个端点 \(S\) 可以到达,而另一个端点 \(S\) 不能到达,那它就是割中的一条边。
  • 对于网格类问题一种比较经典的想法是对行列分别建点, \((i,j)\) 位置有东西则由第 \(i\) 行向第 \(j\) 列连边。
  • 如果计数类问题不好计算可以考虑容斥。
  • 三/四元环的计数通过本周的题目得到了巩固。
  • 对于“找到某个点从而最小化每个关键点到该点的距离和”这类问题,答案就是带权重心,边权对答案没有影响。
  • 排列具有“变换”的意义。
  • 本周的考试策略比较激进,会在一道题上花较长时间,因此容易挂分。以后要注意。

20220509~20220515

  • 调题时如果发现思路错误,需要静下心来重新思考,把思路理顺,而不是一直在做没有意义的调试。
  • dp一定是解决问题的基础思路。计数/最优化问题一定不要忽略这种做法。
  • 思考问题时尽量将一切东西都用数学化的语言进行表达并落到纸上,这样能极大减少想错的概率。
  • 本周用python造数据/写暴力,意外发现还挺方便的。以后还可以多用用。
posted @ 2021-10-31 18:57  BILL666  阅读(154)  评论(0编辑  收藏  举报