ST表 ST表是什么? ST表就是一个用来解决区间最值的算法 它不支持动态修改 预处理时间复杂度O(nlogn),查询复杂度O(1) ST表的原理? 利用了倍增的思想,建表即把给定区间分成长度是2的幂次的小区间,然后从小区间递推到大区间。查询在后面会讲解 ST表的主要变量? f[i][j]:表示区间 ...
分类:
其他好文 时间:
2018-10-06 00:56:53
阅读次数:
512
1、快速排序,上代码: 分析一哈: 当不考虑最差情况(O(n^2))时,快排时间复杂度为O(nlogn):因为层数为O(logn)即调用栈的高度是O(logn),而每层的时间是O(n)2、合并排序 采用分而治之的方法,先把数组分成一个个长度为1的数组,再将数组分别按顺序组合成一个数组 因此涉及到两个 ...
分类:
编程语言 时间:
2018-10-06 00:05:19
阅读次数:
190
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3809 据说一开始应该想到莫队+树状数组,然而我想的却是莫队+权值线段树... 如果用权值线段树,则修改和查询都是 O(logn),总复杂度 O(n√nlogn),艰难...(而且仔细一看空间有 ...
分类:
其他好文 时间:
2018-10-05 21:08:16
阅读次数:
138
coursera上斯坦福的算法专项在讲到快速排序时,称其为最优雅的算法之一。快速排序确实是一种比较有效的排序算法,很多类库中也都采用了这种排序算法,其最坏时间复杂度为$O(n^2)$,平均时间复杂度为$O(nlogn)$,且其不需要额外的存储空间。 基本步骤 快速排序主要使用了分治的思想,通过选取一 ...
分类:
编程语言 时间:
2018-10-05 12:27:44
阅读次数:
191
总结一下快排的模板,O(NlogN)的时间复杂度还是比较实用的,以后直接拿板子套就行 ...
分类:
编程语言 时间:
2018-10-04 11:32:30
阅读次数:
148
最近做了一道关于整体二分的题。 很开心地涉足了关于求区间第k大问题。 问题:给定序列,若干询问,求区间第k小。 第k大类推。 离线算法: 整体二分。 将所有询问离线下来,挂在区间右端点先。 对所有询问二分答案mid。 那么序列上的数就可以划分为两类了,一类小于等于mid,一类大于mid。 用树状数组 ...
分类:
其他好文 时间:
2018-10-04 10:23:01
阅读次数:
325
题意:给定函数$f(x)$,有$n^2 3 n+2=\sum_{d|n}f(d)$,求$\sum_{i=1}^nf(i)$ 题解:很显然的杜教筛,假设$g(n)=n^2 3 n+2$,那么有$g=f I$,由莫比乌斯反演,$f=g \mu$,可以O(nlogn)预处理到1e6,剩余部分杜教筛 我们先 ...
分类:
其他好文 时间:
2018-10-04 10:09:14
阅读次数:
157
[题目链接] https://codeforces.com/contest/496/problem/E [算法] 按右端点排序 , 每个乐曲优先选取的左端点最大的演奏家 用std :: set维护贪心 时间复杂度 : O(NlogN) [代码] ...
分类:
其他好文 时间:
2018-10-03 23:24:28
阅读次数:
143
题意:给定一个初始数组b和一个初始值全部为0的数组a,每次操作可以在给定的区间(l,r)内让a[i](l=<i<=r)加一,或者查询区间区间(l,r)中a[i]/b[i](l=<i<=r)(取整)的和。可以知道,$\sum_{\frac{a_i}{b_i}}\le nlogn$,所以我们只要暴力找到 ...
分类:
其他好文 时间:
2018-10-02 22:29:52
阅读次数:
229
范围最小值问题(Range Minimum Query) 常用Tarjan的Sparse Table算法,预处理时间为$O(nlogn)$,查询为$O(1)$ cpp int rmq[maxn][maxn]; void rmq_init(int a[],int l,int r) { for (int ...
分类:
其他好文 时间:
2018-10-02 22:20:59
阅读次数:
215