首页 > TAG信息列表 > 由乃救

P3793-由乃救爷爷【分块,ST表】

正题 题目链接:https://www.luogu.com.cn/problem/P3793 题目大意 给出\(n\)个数字的一个序列\(m\)次询问区间最大值 保证数据随机 \(1\leq n,m\leq 2\times 10^7\) 解题思路 使用\(ST\)表可以做到\(O(1)\)询问,但是预处理的时空复杂度都是\(O(n\log n)\),且自带大常数导致过不了

Luogu P3793 由乃救爷爷

分块乱搞,设块大小为 \(len\)。 我们暴力预处理每个块前缀、后缀的最大值,用 ST表 求出任意连续块之间的最大值。 预处理复杂度为 \(O(\dfrac{n}{len}\log\dfrac{n}{len}+n+n) = O(n)\)。 查询的时候找中间夹着的块的最大值、左侧后缀和右侧前缀。 查询显然是 \(O(1)\) 的。 但是这

#笛卡尔树#洛谷 3793 由乃救爷爷

题目 询问区间最大值,所有数据随机生成 分析 建一棵笛卡尔树,实际上常数不大可过 代码 #include <cstdio> #include <cctype> #define rr register using namespace std; typedef unsigned uit; typedef unsigned long long ull; const int N=20000011; int n,m,a[N]; ull ans; in