Balanced Lineup poj 3264
也可以用st表做
但st表不支持动态更新
数据结构码得还是太少,本废物给您表演一个花式手抖
数据大注意scanf;
---
#include <iostream> #include <math.h> #include <string.h> #include <vector> #include <map> #include <queue> #include <stdio.h> #include <algorithm> #include <cstdio> using namespace std; int maxn[200007],minn[200007]; void update(int root,int v,int p,int l,int r) { if(l==r) { maxn[root]=max(maxn[root],v); minn[root]=min(minn[root],v); return ; } int mid=(l+r)>>1; if(p<=mid) { update(root<<1,v,p,l,mid); } if(p>mid) { update(root*2+1,v,p,mid+1,r); } maxn[root]=max(maxn[root<<1],maxn[root*2+1]); minn[root]=min(minn[root<<1],minn[root*2+1]); } int query1(int root,int l,int r,int ql,int qr) { // if(l==r) return maxn[root]; if(l>qr||r<ql) return 0; if(l>=ql&&r<=qr) { return maxn[root]; } int mid=(l+r)>>1,ans=-1; if(ql<=mid) { ans=max(ans,query1(root<<1,l,mid,ql,qr)); } if(qr>mid) { ans=max(ans,query1(root*2+1,mid+1,r,ql,qr)); } return ans; } int query2(int root,int l,int r,int ql,int qr) { if(l>qr||r<ql) return (1<<27); if(l>=ql&&r<=qr) { return minn[root]; } int mid=(l+r)>>1,ans=1<<27; if(ql<=mid) { ans=min(ans,query2(root<<1,l,mid,ql,qr)); } if(qr>mid) { ans=min(ans,query2(root*2+1,mid+1,r,ql,qr)); } return ans; } int main() { // freopen("lys.in","r",stdin); memset(maxn,0,sizeof(maxn)); memset(minn,0x3f,sizeof(minn)); int n,m; cin>>n>>m; for(int i=1;i<=n;i++) { int a; scanf("%d",&a); update(1,a,i,1,n); } for(int i=1;i<=m;i++) { int ql,qr; scanf("%d%d",&ql,&qr); printf("%d\n",query1(1,1,n,ql,qr)-query2(1,1,n,ql,qr)); } }
分类:
数据结构
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)