[板子]用线段树解决ST表问题
2024-09-04 07:33:50
ST表可以参考:http://blog.csdn.net/whistlena/article/details/52191463
简单说就是区间RMQ最值问题。
对解决这种问题,线段树不用用啥啊。
扔一个Code:
#include<cstdio>
#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
struct node{
int val;
}segTree[];
int a[];
void build(int root,int arr[],int istart,int iend){
if(istart==iend){
segTree[root].val=arr[istart];
}else{
int mid=(istart+iend)/;
build(root*,arr,istart,mid);
build(root*+,arr,mid+,iend);
segTree[root].val=max(segTree[root*].val,segTree[root*+].val);
}
}
int query(int root,int nstart,int nend,int qstart,int qend){
if(qstart>nend||qend<nstart){
return ;
}if(qstart<=nstart&&qend>=nend){
return segTree[root].val;
}
int mid=(nend+nstart)/;
return max(query(root*,nstart,mid,qstart,qend),query(root*+,mid+,nend,qstart,qend));
}
int main(){
int n,m;
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++){
scanf("%d",&a[i]);
}
build(,a,,n);
int x,y;
for(int i=;i<=m;i++){
scanf("%d%d",&x,&y);
printf("%d\n",query(,,n,x,y));
}
return ;
}
你可以凭借这个Aluogu的T3865
最新文章
- C#------连接SQLServer和MySQL字符串
- 【地图API】收货地址详解2
- webbrowser在不同的.netframework版本差异
- 反编译.net dll
- iOS夯实:ARC时代的内存管理
- Java:List,ArrayList和LinkList的区别
- Titanic数据分析
- 【BZOJ5093】图的价值(第二类斯特林数,组合数学,NTT)
- java数据类型易错点简单总结,欢迎大神前辈补充!谢谢
- 『这是一篇干货blog』
- C#、Java和JS实现SHA256+BASE64加密总结
- c#中WebApi开发遇到的坑
- 基于Asp.net C#实现HTML转图片(网页快照)
- Go之unsafe.Pointer &;&; uintptr 类型
- C++语言实现-邻接表
- python 简单搭建阻塞式单进程,多进程,多线程服务
- vbs获取当前主机IP
- 第14章 Linux账号管理与ACL权限设置
- 线程句柄和线程ID的区别
- PollingProvider方法的使用及示例