試題描述
給定乙個序列 \(a_i\),每次詢問 \(l,r\),求 \([l,r]\) 內最長子串,使得該子串為不上公升子串或不下降子串
輸入第一行 \(n\),表示 \(a\) 陣列有多少元素
接下來一行為 \(n\) 個整數 \(a_i\)
接下來乙個整數 \(q\),表示詢問數量
接下來 \(q\) 行,每行 \(2\) 個整數 \(l\),\(r\)
輸出對於每個詢問,求 \([l,r]\) 內最長子串,使得該子串為不上公升子串或不下降子串
輸入示例
9
1 2 3 4 5 6 5 4 3
51 6
1 72 7
1 95 9
輸出示例665
64
資料規模及約定
\(n,q \leq 50000\)
題解直接上線段樹。分別維護區間最長不降子串長度、區間最長前字尾不降子串長度;上公升同理;最後取 \(max\) 即可。
#include #include #include #include #include #include using namespace std;
const int buffersize = 1 << 16;
char buffer[buffersize], *head, *tail;
inline char getchar()
return *head++;
}int read()
while(isdigit(c))
return x * f;
}#define maxn 50010
int n, a[maxn];
struct info
info(int _, int __): l(_), r(__)
info operator + (const info& t) const
} seg[maxn<<2];
void build(int o, int l, int r)
info query(int o, int ql, int qr)
return ans;
}int main()
return 0;
}
BZOJ 4491 我也不知道題目名字是什麼
給定乙個序列a i 每次詢問l,r,求 l,r 內最長子串,使得該子串為不上公升子串或不下降子串 第一行n,表示a陣列有多少元素 接下來一行為n個整數a i 接下來乙個整數q,表示詢問數量 接下來q行,每行2個整數l,r 對於每個詢問,求 l,r 內最長子串,使得該子串為不上公升子串或不下降子串 9...
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...