数据结构与算法
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 · 634 阅读 · 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 · 225 阅读 · 0 评论 -
取余与取模的区别
取余取模运算符都是:%(不同环境下有所不同:在c/c++,java中,%为取余,在python中,%为取模)取余,遵循尽可能让商靠近0的原则取模,遵循尽可能让上商靠近负无穷的原则a%b = c …da,b同号时,取余取模结果一致;a,b不同号时,结果不一致。取余运算,运算结果d的符号与a一致;取模运算,运算结果d的符号与b一致;...原创 2020-02-02 10:51:54 · 277 阅读 · 0 评论 -
树状数组(学习小结)
树状数组树状数组是一种数据结构,它可以高效处理对一个存储数字的列表进行更新和维护前缀和已知一个长度为n的数组,现在要实现以下操作:更新某个位置的值,查询前i个数的和,查询区间[i,j]的和upData(i, val): 在i位置加上valquery(i):查询区间从第一个数到第i个数的和getSum(i, j): 计算第i个数到第j个数的和树状数组和线段树树状数组可线段树...原创 2020-01-25 16:59:57 · 255 阅读 · 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 · 382 阅读 · 0 评论