总体上,作为一名码力非常弱的一名蒟蒻,虽然非常难以接受一天只能写3题(当然是那种很简单的模拟题)不到的事实,但是事实上就是我并没有翻身的实力。也许写这篇博客也是一种契机,让我来反思自己这一周(或是说这段时间的学习成果)。
1、手速赛心得
首先对于手速赛的难度来说,题目源于cf的比赛题库(大部分是div 3的C、D或是div 2的A、B)难度对于我来说算是中等的题目,并且能够熟悉之前学到的算法。如:Parity,这题可以直接看出运用到的算法是快速幂,这个算法较简单、较好理解,主要是能在理解的基础上能够默写出模板(板子的每一步都要理解为什么要写这句)。
手速赛的题型除了模板题以外还有算法题、模拟题。模拟题需要的思考可能更多,在某些时候写题的耗时量也会比算法题更久(当然是对于我这样的蒟蒻而言),它不像算法你可以通过视频来学习如何写这类的题目,只要题干发生变化,又要重新思考。而我也能从中反思到自己的不足:我的题量还是太少了,模拟题每天都要至少写两题提高模拟题的码力。如:Arena of Greed 这题对于我来说还是有点挑战了 ,那我顺便就直接说一下这题的思路:无非就是减一和除二两个if即可,但实际上除了这两个,我们要考虑到一点,直接进行游戏并且直接按照剩余数乖乖地进行操作有可能拿不到最大值,要想方设法让对方遇到奇数的情况或是让对方遇不到偶数的情况。此时能够操作的地方就在当剩余数是4的倍数的时候,我方可以不选择拿一半而是拿1,使得对方拿不到下一个的一半而是1,这样不仅可以使对方拿的少,我方还可以拿到一半数量。所以一共有三种情况,题目也简单地解开了。
当然算法题像dfs和dp我还在不断练习,类似:Maze 这题显然就是一道经典的dfs的题。主要思路是把所有的 . 转化成X,每操作一次k减一,在通过dfs从头遍历数组,每进行一次k加一。当k等于0时即可打印出数组。
2、平时的练习
我这一周平时的练习主要是根据acwing上的视频对一些算法和题目开始学习,但是效果比较甚微。这周的主要内容是关于dp的引入,然后我去洛谷上找了dp基础的题单开始学习dp。总结下来我对dp的认识,它最难的地方是每一题有不同的状态表示和状态计算,所以dp的题是十分多变的,不能通过背板子来学通dp。总的来说还是以刷题、多思考、多理解状态表示来提高dp方面的能力。下周主要以dfs、bfs为主、dp为辅的方式写题。(当然模拟题仍然要写)