懒更新|单点查询

lc1636

带懒标记的区间加法、乘法、单点查询的实现

++全局 add、mul 懒标记代替逐个修改元素++,append 时用费马小定理求逆元还原原值

查询时 O(1) 计算真实值

时间复杂度全操作 O(logMOD)

class Fancy {

static constexpr int MOD = 1'000'000'007;

vector<int> vals;

long long add = 0;

long long mul = 1;

long long pow(long long x, int n) {

long long res = 1;

for (; n; n /= 2) {

if (n % 2) {

res = res * x % MOD;

}

x = x * x % MOD;

}

return res;

}

public:

void append(int val) {

// 注意这里有减法,计算结果可能是负数,+MOD 可以保证计算结果非负

vals.push_back((val - add + MOD) * pow(mul, MOD - 2) % MOD);

}

void addAll(int inc) {

add = (add + inc) % MOD;

}

void multAll(int m) {

mul = mul * m % MOD;

add = add * m % MOD;

}

int getIndex(int idx) {

if (idx >= vals.size()) {

return -1;

}

return (valsidx * mul + add) % MOD;

}

};

相关推荐
To_OC2 小时前
LC 51 N 皇后:我以为难的是回溯,结果栽在了对角线下标
javascript·算法·leetcode
2401_841495643 小时前
【操作系统】进程同步与互斥实验报告
c++·算法·操作系统·进程·并发·同步·互斥
爱刷碗的苏泓舒7 小时前
PPP-AR 中的参考星选取:数学原理、评价指标与切换处理
算法·gnss·模糊度固定·ppp-ar·星间单差·参考星·卫星端偏差
烬羽10 小时前
递归老写崩?一个"退回"公式,把回溯题变成填空题
javascript·深度学习·算法
闪电悠米10 小时前
力扣hot100-41.缺失的第一个正数-原地哈希详解
数据结构·算法·哈希算法
星空露珠10 小时前
28种颜色对应名称,
开发语言·数据库·算法·游戏·lua
QXWZ_IA12 小时前
桥梁数字孪生怎么落地?
人工智能·科技·算法·智能硬件·政务
Kel12 小时前
输出层与反分词(Output Layer & Detokenization)
人工智能·算法·架构
陕西企来客12 小时前
2026年7月技术好GEO优化方案:算法适配与内容策略
人工智能·算法·机器学习·技术好geo优化