基本用途:维护序列的前缀和。 对于给定的序列a,建立一个数组c,其中c[x]保存序列a的区间[x-lowbit(x)+1,x]中所有数的和,其中lowbit(x)指:x的二进制下最小的2的次幂,如: lowbit(7)=1,lowbit(6)=2,lowbit(5)=1,lowbit(4)=4 该结 ...
分类:
编程语言 时间:
2020-01-26 19:03:58
阅读次数:
56
前奏:统计 n! 中的所有质因子中pi的个数 普通方法:复杂度O(nlogn), 当n为10的18次方无法承受 // 复杂度O(nlogn), n为10的18次方无法承受 int cal(int n, int p){ int ans = 0; for (int i = 2; i <= n; i++) ...
分类:
其他好文 时间:
2020-01-26 13:01:28
阅读次数:
59
RMQ是询问某个区间内的最大值或最小值的问题,ST算法可以求解RMQ问题.ST算法通常用在要多次询问某一些区间的问题中,相比于线段树,它的程序实现更加简单,运行速度更快,它可以做到O(nlogn)的预处理,O(1)回答每个问题.使用ST算法的条件是没有修改操作,因此它适用于没有修改操作并且访问次数较多(10^6级别甚至更大)的情况.1.预处理ST算法的原理实际上是动态规划,首先要知道f数组的含义,
分类:
编程语言 时间:
2020-01-24 10:57:33
阅读次数:
101
群组错位词。题意是给一个数组,数组里面的元素是字符串,请将input根据错位词的原则分组输出。例子, Example: Input: ["eat", "tea", "tan", "ate", "nat", "bat"], Output: [ ["ate","eat","tea"], ["nat"," ...
分类:
其他好文 时间:
2020-01-24 09:12:21
阅读次数:
79
ST算法能在O(NlogN)时间内对数列a预处理, 以O(1)的时间复杂度在线回答”数列a中下标在l~r之间的数的最大(小)值是多少“预处理:1)f[i][j]表示数列a中下标在子区间[i,i+2^j-1]里的数的最大(小)值, 即i开始的2^j个数的最大(小)值2)f[i][j]=max(f[i] ...
分类:
编程语言 时间:
2020-01-23 21:16:13
阅读次数:
130
ST算法能在O(NlogN)时间内对数列a预处理,以O(1)的时间复杂度在线回答“数列a中下标在l~r之间的数的最大(小)值是多少预处理:f[i][j]表示数列a中下标在子区间[i,i+2^j-1]里的数的最大(小)值,即i开始的2^j个数的最大(小)值f[i][j]=max(f[i][j-1],f ...
分类:
编程语言 时间:
2020-01-23 19:48:21
阅读次数:
81
/*********************************************JS归并排序***************************************************/ /*之前学习了一下归并算法,现在想把他分享给大家*/ /* * 归并排序,分开数组,不断一 ...
分类:
编程语言 时间:
2020-01-23 09:19:26
阅读次数:
81
这篇博客是cyc的,看着挺容易懂的我就不再总结啦(滑稽 一个标准的板子,涉及到的只有一个叫做线段树的数据结构 First:线段树是什么? 线段树其实就是一棵二叉树,它将一个数列分成小区域,每个节点分别储存其对应的区间左右端点。 如图,设数组 a[n] ,图中 [ i,j ] 表示每一个二叉树结点对应 ...
分类:
其他好文 时间:
2020-01-18 10:53:50
阅读次数:
62
T1 与或和 2s&&512MB 简明题意:求一个矩阵的所有子序列的 $and$和 和$or$和; 子矩阵的$and$和就是所有值$and$起来;$or$类似; 矩阵边长$n define ll long long define mp make_pair using namespace ...
分类:
其他好文 时间:
2020-01-12 20:11:28
阅读次数:
79
【总结】 归并排序 归并排序和冒泡排序,选择排序,桶排等一样属于排序方式 优点: 归并排序是一种稳定的排序方式 时间复杂度同快速排序一样为O(nlogn) 缺点: 需要O(n)的辅助空间 然后就是算法实现的具体流程辣 (图片来自百度百科 1.拆分 对于一个序列,我们每次将它分为两部分 对于每一部分再 ...
分类:
编程语言 时间:
2020-01-11 18:14:34
阅读次数:
80