移动端 Banners
望君莫守旧时憾,焦原春来又青青
甲辰冬月十四,余与诸生从师外出而行退役之礼,相谈甚悦。然颇感竞赛之事,乐中生涩,戚然惋叹;念生涯一载悲喜,情涌而溢;视后生善学能思,审而后行,赞意不止;望东辰瘴晦毕见,择才尽废,不知所言。凡喜、憾、恸、诽四情深切,欲却之而不遂。是故致志此篇,以为竞赛辞藻之绝笔作也。
基础数据结构 树状数组
我在第一次决定学树状数组前就预先接触过线段树的基本概念和操作,当时只觉得树状数组能做到的事情线段树也能做到。不仅如此,线段树朴素的二分思想在我看来是易于树状数组的 lowbit 规律的,综上种种,那时我便跳过了树状数组的学习。而如今接触到了各种线段树无法轻易解决的问题(偏序、逆序对等),才记起树状数组的各种好,经过再三斟酌,我决定还是简单学习一下树状数组。
线性代数 简明教程
本文是 \texttt{Steven J.Leon} 所著《线性代数》(原书第十版)的简要总结与算法竞赛方面的扩充,适合线性代数入门者学习并把握线性代数的基本概念和内容。
Bunny Jump——斐波那契数列
斐波那契数列是一个很有意思的东西,它的每一项都由前两项的和导出,即对于 n\geq3,有 F_n=F_{n-1}+F_{n+2}。入门算法时,尤其是刚开始涉及递归函数时,你可能就已经写过求解斐波那契数列通项的函数了。基于递归的算法会将当前数分为两个较小的数,然后继续分解直到变为 F_1,F_2。一般来说,这样的算法复杂度是 \mathcal O(2^n) 的,极其不友好。我们会选择从定义出发,也就是使用循环结构来递推。等到了提高组,你会发现这个算法也不是最优的,稍微了解线性代数(此处尤指矩阵乘法)后,你会发现斐波那契数列的通项可以由下面这个矩阵递推式给出: