线段树查询i到j最长增加子串和序列
基础篇
最长增加子数组 - 楠030416 - 博客园 (cnblogs.com)
增加线段树
子串
#include<bits/stdc++.h> using namespace std; //最长连续增加子串 int a[100],dp[100],tree[100]; void build(int o, int l, int r) { if(l == r) { tree[o] = dp[l]; return; } int mid = (l + r) >> 1; build(o << 1, l, mid); build(o << 1 | 1, mid + 1, r); tree[o] = max(tree[o << 1], tree[o << 1 | 1]); } int query(int o, int l, int r, int L, int R) { if(L <= l && r <= R)return tree[o]; int mid = (l + r) >> 1; int ans = 0; if(L <= mid)ans = max(ans, query(o << 1, l, mid, L, R)); if(R > mid)ans = max(ans, query(o << 1 | 1, mid + 1, r, L, R)); return ans; } int main() { int n,m;//n数组元素个数,m问询次数 cin>>n>>m; for(int i=1;i<=n;i++) { cin>>a[i]; dp[i]=1; } for(int i=2;i<=n;i++) { if(a[i]>a[i-1]) { dp[i]=dp[i-1]+1; } else dp[i]=1; } build(1,1,n); cout<<"dp"<<endl; for(int i=1;i<=n;i++) cout<<dp[i]<<" "; cout<<"tree"<<endl; for(int i=1;i<2*n;i++) cout<<tree[i]<<" "; cout<<endl; for(int i=0;i<m;i++) { int l,r; cin>>l>>r; cout<<"结果"<<query(1,1,n,l,r)<<endl; } }
子序列
#include<bits/stdc++.h> using namespace std; //最长连续增加子序列 ,不一定连续 int a[100],dp[100],tree[200],maxn=0; void build(int o, int l, int r) { if(l == r) { tree[o] = dp[l]; return; } int mid = (l + r) >> 1; build(o << 1, l, mid); build(o << 1 | 1, mid + 1, r); tree[o] = max(tree[o << 1], tree[o << 1 | 1]); } int query(int o, int l, int r, int L, int R) { if(L <= l && r <= R)return tree[o]; int mid = (l + r) >> 1; int ans = 0; if(L <= mid)ans = max(ans, query(o << 1, l, mid, L, R)); if(R > mid)ans = max(ans, query(o << 1 | 1, mid + 1, r, L, R)); return ans; } int main() { int n,m; cin>>n>>m; for(int i=1;i<=n;i++) cin>>a[i]; int maxn=0; for(int i=1;i<=n;i++) { for(int j=1;j<i;j++) { int t=0; t=dp[j]; if(a[j]<a[i]) t++; if(t>dp[i]) dp[i]=t; } } build(1,1,n); cout<<"dp"<<endl; for(int i=1;i<=n;i++) cout<<dp[i]<<" "; cout<<endl; cout<<"tree"<<endl; for(int i=1;i<2*n;i++) cout<<tree[i]<<" "; cout<<endl; for(int i=0;i<m;i++) { int l,r; cin>>l>>r; cout<<"结果"<<query(1,1,n,l,r)<<endl; } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探