#include<bits/stdc++.h>
using namespace std;
#define LL long long
const int inf = 0x3f3f3f3f;
const int N = 100005;
int dp[N],a[N],b[N];
int t[N*4];
int n;
void upd(int rt,int l,int r,int pos,int val)
{
if(l==r)
{
t[rt]=val;
return ;
}
int m=(l+r)>>1;
if(pos<=m) upd(rt<<1,l,m,pos,val);
else upd(rt<<1|1,m+1,r,pos,val);
t[rt]=max(t[rt<<1],t[rt<<1|1]);
}
int ask(int rt,int l,int r,int ql,int qr)
{
if(l>=ql && r<=qr)
{
return t[rt];
}
int m=(l+r)>>1;
int q1=0;
int q2=0;
if(ql<=m) q1=ask(rt<<1,l,m,ql,qr);
if(qr>m) q2=ask(rt<<1|1,m+1,r,ql,qr);
return max(q1,q2);
}
void cdq(int l,int r)
{
if(l>=r) return ;
int m=(l+r)>>1;
cdq(l,m);
for(int i=l;i<=m;i&#
cdq解决LIS问题
最新推荐文章于 2021-04-15 23:36:32 发布
本文详细介绍了如何运用cdq分治算法来解决经典的最长递增子序列(LIS)问题,通过实例解析算法步骤,揭示了cdq算法在处理这类问题时的高效性和实用性。
摘要由CSDN通过智能技术生成