数据结构与算法
Tw_light
这个作者很懒,什么都没留下…
展开
-
快速幂 (递归/迭代)
快速幂+递归 求x64x^{64}x64 : x→x2x^{2}x2→ x4x^{4}x4→ x8x^{8}x8→ x16x^{16}x16→ x32x^{32}x32→ x64x^{64}x64 , 只需要把前一个的xkx^kxk自乘一次 求x65x^{65}x65: x→x2x^{2}x2→ x4x^{4}x4→ x8x^{8}x8→ x16x^{16}x16→ x32x^{32}x32→ x65x^{65}x65 , 在x32x^{32}x32自乘一次后还要再乘一个x 求xnx^{n}xn: ①若原创 2020-05-11 11:56:12 · 589 阅读 · 0 评论 -
全排列 (回溯 / next_permutation)
输入n个数,输出这n个数的全排列 回溯法 n个数,想象有n个空位,从左往右在空位中填数字,数字不能重复使用 nums[ ]: 存储输入的n个数 vis[ i ]: 标记数组, nums[]中第i个数是否被使用 ans[ ]: 存储当前排列 #include<iostream> #include<algorithm> #include<cstring> #i...原创 2020-04-25 11:40:49 · 178 阅读 · 0 评论 -
取余与取模的区别
取余取模运算符都是:% (不同环境下有所不同:在c/c++,java中,%为取余,在python中,%为取模) 取余,遵循尽可能让商靠近0的原则 取模,遵循尽可能让上商靠近负无穷的原则 a%b = c …d a,b同号时,取余取模结果一致; a,b不同号时,结果不一致。 取余运算,运算结果d的符号与a一致; 取模运算,运算结果d的符号与b一致; ...原创 2020-02-02 10:51:54 · 203 阅读 · 0 评论 -
树状数组(学习小结)
树状数组 树状数组是一种数据结构,它可以高效处理对一个存储数字的列表进行更新和维护前缀和 已知一个长度为n的数组,现在要实现以下操作: 更新某个位置的值,查询前i个数的和,查询区间[i,j]的和 upData(i, val): 在i位置加上val query(i):查询区间从第一个数到第i个数的和 getSum(i, j): 计算第i个数到第j个数的和 树状数组和线段树 树状数组可线段树...原创 2020-01-25 16:59:57 · 208 阅读 · 0 评论 -
矩阵快速幂
1.快速幂 快速幂也叫二进制取幂,想要快速求出 ana^nan的结果就用它来求。 ana^nan表示将n个a乘在一起,时间复杂度是O(n)级别,如果n太大的话这种方法就不适用了。 如果使用快速幂的话时间复杂度能达到O(log2log_2log2n),因为n有⌊log2log_2log2n⌋ + 1 个二进制位,所以当知道了每一位的值后,只需要通过log2log_2log2n次乘法就可计算出a...原创 2020-01-18 15:44:36 · 311 阅读 · 0 评论