本人太菜了,不是很懂这个东西,只是有点懂了快速傅里叶变换的一种方法,本文没有代码,只是证明了这种快速傅里叶变换的方法是正确的。 本文大量使用复数,i表示$\sqrt{-1}$。 多项式乘法 快速傅里叶变换用于快速解决多项式乘法的问题。即 设$A(x)=\displaystyle\sum_{j=0}^ …

[题目传送门][1] 我看到题一脸懵逼,感觉一点思路都没有,然后想了6个小时,搞出来了一个很复杂的一堆前缀和的做法,然后错了。最后我发现其实不需要这么复杂,这题其实是一道水题,我们可以进行一些简单的分析来A了它。 由于每天各个人的分数是异或产生的,很容易想到搞一棵字典树。我又发现对于每一个人,它既要 …

一道我自己出的水题,题目描述: 要求支持两种操作:对一个三维区间上的数都加上一个数,或者询问一个三维区间上所有数的和,三维区间的三个坐标都是整数且范围在[1,100],询问10000个。 写个三维树状数组就AC了,是不是很简单。数据: sbworld 标程: var c1,c2,c3,c4,c5,c …
HNOI2008GT考试题解

我们先简化一下问题,比如我们把字符集变成3,可以先来看下长度为3,字符串为10的答案。我们可以想到构一棵决策树,叶节点就是所有的方案,如果一个树上一个节点到根的路径上构成的字符串中有一个子串匹配就把这个点涂黑。如图是这个例子的决策树: 我们用一个补集思想,考虑对于每一个子树中叶节点被染黑的个数,我们 …

题目传送门 一道水题,据说有O(n)做法,我竟然没想到也没看懂。我的做法是KMP后用next数组搞棵树,然后在树上找一个节点前面最后一个符合条件的节点,一种方法是发现这玩意有单调性,然后用一个point数组记录下其父亲的决策点,再拿个ST表倍增或者Tarjan+二分,也可以利用轻重链搞一搞就可以了。 …

1.指针基础 1.引用 C++有一个东西叫引用,引用相当于给对象(如:变量)起了另一个名字,引用必须用对象初始化,一旦初始化,引用就会和初始化其的对象绑定在一起,就是说引用的值就是被引用的对象的值,引用的值被修改时被引用的对象也会被修改,但不能定义引用的引用,因为引用不是对象,引用定义方式: 类型 …

1.按秩合并的操作 相信大家都知道并查集(不相交集合森林),由于路径压缩优化后时间复杂度分析极难,不易理解,本文来讨论下一种易于分析的优化方式:按秩合并。按秩合并的时间复杂度是O(lgn)的,常数很小,虽然不是特别优秀,但在许多情况下也够用了。 按秩合并的方式就是,对于每一个结点x记录下一个秩(x. …

                              浅析C++类 1.类成员 1.从struct到class 大家应该都知道C++中的struct吧,其只是一个C++类的特殊形式。 struct A{ //内容 }; 类用class表示,上述代码就相当于: class A{ public: …