思路:

这是ST表模板。遇到一道indeed笔试题需要用这个算法,顺便学习一下。那道题是说给定一个一维数组和一些查询[Li, Ri],要求计算[Li, Ri]区间内子段和的绝对值的最大值。解法是使用ST表计算所求区间内最大前缀和 - 最小前缀和即可。

实现:

 #include <bits/stdc++.h>
using namespace std;
const int N = ;
int a[N], st[N][];
int log2(int x)
{
int res = -;
while (x)
{
x >>= ;
res++;
}
return res;
}
int main()
{
ios::sync_with_stdio(false);
int n, q, l, r;
cin >> n;
for (int i = ; i < n; i++) cin >> a[i];
for (int i = ; i < n; i++) st[i][] = a[i];
for (int j = ; ( << j) < n; j++)
{
for (int i = ; i + ( << j) - < n; i++)
{
st[i][j] = min(st[i][j - ], st[i + ( << j - )][j - ]);
}
}
cin >> q;
while (q--)
{
cin >> l >> r;
l--; r--;
int p = log2(r - l + );
cout << min(st[l][p], st[r - ( << p) + ][p]) << endl;
}
return ;
}

最新文章

  1. c#获取外网IP地址的方法
  2. 原创:从零开始,微信小程序新手入门宝典《一》
  3. 你应该知道的jQuery技巧 [转]
  4. 转:linux下安装或升级GCC4.8,以支持C++11标准
  5. HTTP状态码及其含义
  6. eclipes(小白)快捷键
  7. [ERROR] Failed to execute goal org.apache.maven.plugins:maven-jar-plugin:2.3.1:jar (default-jar) on
  8. bzoj 2428: [HAOI2006]均分数据
  9. I.MX6 Android USB Touch eGTouchA.ini文件存放
  10. android 98 MediaPlayer+SurfaceView播放视频
  11. libiconv_百度百科
  12. cocos2dx进阶学习之CCAction
  13. android activity中监听View测量完成的4种方式
  14. JS内置对象有哪些?
  15. @ResponseBody 返回乱码 的解决办法
  16. python网络聊天器多线程版
  17. Psi Probe 安装及使用说明
  18. beanutils的使用
  19. using Redis in .net core
  20. map集合中value()、keySet()、entrySet()区别

热门文章

  1. Swift Optional Chaining
  2. C++之static类成员,static类成员函数
  3. [Java] 练习题001:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
  4. Flutter实战视频-移动电商-55.购物车_底部结算栏UI制作
  5. 玲珑OJ1088【蜜汁尺取】
  6. Lightoj 1129【字典树】
  7. HDU2489【状压枚举】
  8. laravel 安装配置前准备
  9. iTween基础之iTweenPath浅析(自定义路径移动)
  10. Codevs 3112 二叉树计数