1.线段树: 1#include <iostream>2#include <algorithm>3#include <cstdio>4usingnamespacestd;56constexpr size_t N = 4e5 + 10;7intarr[N], tree[N];89voidbuild_tree(intnode,intstart,intend) {10if(start == end) {11tree[node] = arr[start];12return;13}14intmid = (start + end) >>...
}voidupdata(intl,intr,intindex,intval){if(l <= tree[index].l && r >=tree[index].r){/*把原来的值替换成val,因为该区间有tree[index].r-tree[index].l+1 个数,所以区间和 以及 最值为:*//*tree[index].sum = (tree[index].r-tree[index].l+1)*val; tree[index].mn = val; tree[...
MASTER OF GCD(树状数组差分|线段树) 嗯。反正这道题当时忘记了树状数组差分。用的线段树。比赛时写这么长的线段树时间上多少有点吃亏。 就是两个树,维护区间加1操作,然后分别查两棵树的最小值。 树状数组差分: 比赛时写的线段树: 线段树解约瑟夫环
1.线段树: 1#include <iostream>2#include <algorithm>3#include <cstdio>4usingnamespacestd;56constexpr size_t N = 4e5 + 10;7intarr[N], tree[N];89voidbuild_tree(intnode,intstart,intend) {10if(start == end) {11tree[node] = arr[start];12return;13}14intmid = (start + end) >>...
功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值。限制:LL不超过当前数列的长度。(L > 0)(L>0) 2、 插入操作。语法:A n功能:将nn加上tt,其中tt是最近一次查询操作的答案(如果还未执行过查询操作,则t=0t=0),并将所得结果对一个固定的常数DD取模,将所得答案插入到数列的末尾。