懒更新|单点查询

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 (vals[idx] * mul + add) % MOD;

}

};

相关推荐
lwf0061641 小时前
导数学习日记
学习·算法·机器学习
头发够用的程序员2 小时前
从滑动窗口到矩阵运算:img2col算法基本原理
人工智能·算法·yolo·性能优化·矩阵·边缘计算·jetson
武帝为此2 小时前
【数据清洗缺失值处理】
python·算法·数学建模
Halo_tjn3 小时前
Java 基于字符串相关知识点
java·开发语言·算法
念越3 小时前
算法每日一题 Day08|双指针法解决三数之和
算法·力扣
黎阳之光3 小时前
黎阳之光透明管理:视频孪生重构智慧仓储新范式
人工智能·算法·安全·重构·数字孪生
CappuccinoRose4 小时前
回溯法 - 软考备战(四十三)
算法·排列组合·路径·n皇后·子集·解数独·岛屿
AC赳赳老秦4 小时前
OpenClaw进阶技巧:批量修改文件内容、替换关键词,解放双手
java·linux·人工智能·python·算法·测试用例·openclaw
Robot_Nav5 小时前
Shape-Aware MPPI(SA MPPI)算法:基于RC-ESDF的任意形状机器人实时轨迹优化
算法·机器人·sa-mppi
小O的算法实验室6 小时前
2026年ESWA,自适应基于排序的协同进化学习粒子群算法+边缘计算服务器部署,深度解析+性能实测
算法·论文复现·智能算法·智能算法改进