今天上午补了牛客暑假多校训练2的J—farm,思路就是大胆想到利用随机数,将每个点进行1e6之外的hash,然后就是简单的二维树状数组进行区间求和,最后只要判断对应点的权值%初始权值是否为0就可以了。由这道题复习了一下树状数组,重新回顾了差分在区间更新中的应用。
中午就是在研究树形dp,这道dp题还蛮有意思的,也是第一次接触这种考察思维+细节+脑洞的dp题,从未想过还可以这样,三维的dp[i][j][k](i为子树id,j为选择了几条链,k为选择的j条链中是否包含了经过i点的直链)。只是想明白了,还未自己敲。待补。
晚上打了场小白月赛,发现自己还是不敢猜,有道很简单的题,如果对数字敏感的话一眼就可以看出答案。题目待补。
本周总结:
1.对树状数组的复习:
结合牛客多校训练1的J题(离线+扩大二倍求区间出现的不同数字的个数)题目
今晚牛客小白月赛。树状数组区间更新区间查询 (比赛时不知道哪里写错了,只过了30%样例,待整理)题目
牛客暑假多校训练2的J题,感觉出的还挺好的,只考察了二维树状数组区间更新。但是想不到随机数或者还有一种方法就过不了。也可以转化成一维。题目
2.对线段树的复习
多校专题一的Gorgeous Sequence
就是一道很经典的线段树的扩展的应用,要用到lazy的思想。这道题让我大开眼界。还是要多巩固自己看题解后裸敲代码也很吃力,还应该再多敲几次练习手速。
3.思维题
Delicious Apples 这个题就是dp+贪心的思想,我觉得这种只单独讨论k个苹果的思想,和苹果总量不大的情况下以苹果为单位讨论的思想处理的很好。还是要记住这类问题,以后碰到类似的直接套用
还有很多最近打的牛客的题
4.stl
遇到连续问题的时候要想到单调队列。巩固了我对这一块的运用,之前用的不多,也不是很熟,这块还要多练。
总结:
学到的知识就是对每一种方法的优化是很重要的。写代码前一定要估算好复杂度,看准题目,看准数据范围,这样敲的代码在比赛时才有意义。
感觉这周主要是把基础的东西(树状数组+线段树)以前会偷懒,直接套模板,现在真的是自己写了,把原来不懂得基础的知识lowbit等为什么这样用等等搞明白了,但是我现在对树状数组的区间更新的那一块差分还有点不理解,只是知道这么写。再研究一下今晚的小白赛就是这个,不知道哪里写错了。
跟其他人比起来,自己的能力还是不行,但是这不妨碍我的思维,思维,脑洞还是要大一点,其实昨天的那道随机数的,因为以前没用过,不知道随机数还可以这样搞,所以没想到,但是这次见了,下次就肯定会往这方面想。做做多校,尽最大能力补题感觉受益匪浅,这周主要是掌握了该如何训练。下周一定不能跟这周一样了,这周有点消极,效率不高的原因还在于自己注意力不专注。一定要注意这一点。至于本周知识的拓展还没写博客。
比赛时一定要注意配合,多讨论多思考。