Advertisement

珂朵莉树:区间推平

阅读量:

请设计一种特殊的数据结构,具备以下功能:

  1. l r x :对区间 [l,r] 内的所有元素增加 x
  2. l r x :将区间 [l,r] 内的所有元素设置为 x
  3. l r x :查询区间 [l,r] 内所有元素按升序排列后的第 x 个数值(即该区间第 x 小的数,若存在相同数值则各自计数,且满足 1\leq x \leq r-l+1
  4. l r x y :计算区间 [l,r] 内每个元素的 x 次幂之和,并对 y 取模的结果(即 (\sum^r_{i=l}a_i^x) \mod y
复制代码
    #include <iostream>
    #include <set>
    #include <algorithm>
    #include <vector>
    #include <cstdio>
    
    using namespace std;
    
    typedef long long ll;
    const ll MOD = 1000000007;
    const ll MAXN = 100005;
    
    struct Node {
    ll l, r;//l和r表示这一段的起点和终点
    mutable ll v;//v表示这一段上所有元素相同的值是多少
    

全部评论 (0)

还没有任何评论哟~