![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
RMQ
睡神...
一切伟大的思想,都有一个微不足道的开始。。。
展开
-
HDU 3486 题解
HDU 3486 总共n个元素,分成m段,每一段挑选出该段中的最大值,将最大值求和,看是否严格大于k。如果找不到输出-1。 如果分的组比较少,每一组元素比较多,那么所得的和就会比较小;如果组分得多,原来比较小的就有可能会成为最大的,那么所得的和也会大。如果每一个数,即每一个数一组,他们的和都不大于k的话,说明根本找不到m,输出-1 可能大家会想到暴力,用k除以最大的元素找到m的最小值,然后m不断++,暴力枚举。但这样实在是太慢了!为什么呢?首先分个组数,m不断加一,k可以到10个亿啊,组数会很多。。。原创 2020-07-03 18:04:22 · 392 阅读 · 1 评论 -
RMQ 框架
RMQ 区间最值(最大or最小)查询 时间复杂度:O(nlogn) 题目:给你区间[l,r],查找区间最小值 //f[i][j]表示从a[i]开始,长度为2^j //f[1][1]=min(f[1][0],f[2][0]) #include <bits/stdc++.h> using namespace std; int main() { std::ios::sync_with_stdio(false); int n; cin>>n; int f[n+1][int原创 2020-06-30 18:57:01 · 159 阅读 · 0 评论