給定乙個序列a[i],每次詢問l,r,求[l,r]內最長子串,使得該子串為不上公升子串或不下降子串
第一行n,表示a陣列有多少元素
接下來一行為n個整數a[i]
接下來乙個整數q,表示詢問數量
接下來q行,每行2個整數l,r
對於每個詢問,求[l,r]內最長子串,使得該子串為不上公升子串或不下降子串
91 2 3 4 5 6 5 4 3
51 6
1 72 7
1 95 966
564//樣例解釋
五個詢問分別對應
[1,6][1,6][2,6][1,6][6,9]
n,q<=50000
by 乙個讀錯題的沙茶
~~~~~~~~~~~~~~~~~~~~~~~~~~
線段樹+思路~
神奇的用法!
線段樹記錄每個點的以它為終點和以它為起點的最長不上公升子串長度和不下降子串長度,再記錄區間最大值,然後每次詢問即可。
#include#include#includeusing namespace std;
int n,m,l,r,c[50001],b[50001];
struct nodea[50001<<2];
int read()
while(ch>='0' && ch<='9')
return x*f;
}void update(int k,int kkz)
void build(int l,int r,int k,int kkz)
int mid=l+r>>1;
build(l,mid,k<<1,kkz);build(mid+1,r,k<<1|1,kkz);
update(k,kkz);
}int cal(int k,int u,int v,int kkz)
if(v>mid)
now=max(now,ll+rr);
return now;
}int main()
return 0;
}
BZOJ 4491 我也不知道題目名字是什麼
time limit 10 sec memory limit 512 mb submit 278 solved 154 submit status discuss 給定乙個序列a i 每次詢問l,r,求 l,r 內最長子串,使得該子串為不上公升子串或不下降子串 第一行n,表示a陣列有多少元素 接下來...
BZOJ4491 我也不知道題目名字是什麼
給定乙個序列a i 每次詢問l,r,求 l,r 內最長子串,使得該子串為不上公升子串或不下降子串 第一行n,表示a陣列有多少元素 接下來一行為n個整數a i 接下來乙個整數q,表示詢問數量 接下來q行,每行2個整數l,r 對於每個詢問,求 l,r 內最長子串,使得該子串為不上公升子串或不下降子串 9...
BZOJ4491 我也不知道題目名字是什麼
試題描述 給定乙個序列 a i 每次詢問 l,r 求 l,r 內最長子串,使得該子串為不上公升子串或不下降子串 輸入第一行 n 表示 a 陣列有多少元素 接下來一行為 n 個整數 a i 接下來乙個整數 q 表示詢問數量 接下來 q 行,每行 2 個整數 l r 輸出對於每個詢問,求 l,r 內最長...