1、前言
好久没有写考试总结了,因为没怎么考试(好废话的感觉)。今天考的稀下的,还是因为考试的时候状态不好,一些很傻逼的方法想不出来,反而去写还不熟练的什么鬼平衡树了。看了题解之后确实觉得没有什么很难的知识点,都是基础。所以以后还要加强一些基础方面的东西。
2、Toy 玩玩具
大概题意:一条带权值的链,现已知每次插入的位置以及其权值,求最终链的状态。
题解:一开始就想着写Splay,的确可行,但是还不够理解,所以半天没有完全写出来。确实这道题不需要用到Splay,如题解所言:
“因为已经提醒过考试范围没有超过 NOIP,所以标程算法并不是平衡树。虽然实际情况是按时间顺序向长链中插入元素,但是随着元素的插入,链也不断发生着变化,这样除了模拟之外没有其他很好的算法。所以,我们不妨用逆向思维去思考这个问题。 如果是逆着插入点,首先,对于每一个元素 i,在它之前必有 k[i]-1 个空元素(也就是在它之 前插入的未知元素),而且对于最后插入的那个元素 n,它的最终位置必为 k[n]+1,并且不会再发生移动。 再来考虑插入的第 n-1 个元素, ① 如果 k[n-1]<k[n],那么第 n 个元素的插入不会影响到它的最终位置,所以它的最终位 置为 k[n-1]+1,满足它之前有 k[n-1]-1 个空元素。 ② 如果 k[n-1]>=k[n],如果它仍然要插在 k[n-1]+1 的位置,那么第 n 个元素的插入使它 之前的空元素个数为 k[n-1]-2,小于 k[n-1]-1。这样会导致在它之前插入的点的个数大 于所能提供的位置数,则它必须插在之前有k[n-1]-1个空元素的位置,也就是k[n-1]+2。 然后对于这之前的每一个元素 i,都必须插在之前有 k[i]-1 个空元素的位置(当然那个位置 也要为空) ,所以只要从头开始数,数到有 k[i]个空元素的位置,将其插入。 朴素算法是 n^2 的,所以可以用树状数组维护,线段树也可以。”
3、Guinness 吉尼斯纪录
又是一道什么鬼链表,今天的画风好像有问题。