当前位置: 首页 > news >正文

两个bm|分块

C++ 分块算法模板,适合区间修改、区间查询类问题(如区间加、区间和),直接就能用

#include <iostream>

#include <vector>

#include <cmath>

using namespace std;

const int MAXN = 1e5 + 5;

int a[MAXN]; // 原数组

long long sum[MAXN]; // 每块的和

int add[MAXN]; // 每块的懒标记(增量)

int block_size; // 块大小

int n;

// 初始化分块

void init() {

block_size = sqrt(n);

for (int i = 1; i <= n; i++) {

int bid = i / block_size;

sum[bid] += a[i];

}

}

// 区间加 [l, r] += val

void update(int l, int r, int val) {

int bl = l / block_size;

int br = r / block_size;

if (bl == br) {

// 同一块,暴力修改

for (int i = l; i <= r; i++) {

a[i] += val;

sum[bl] += val;

}

} else {

// 左边碎块

for (int i = l; i < (bl + 1) * block_size; i++) {

a[i] += val;

sum[bl] += val;

}

// 中间整块

for (int i = bl + 1; i < br; i++) {

add[i] += val;

}

// 右边碎块

for (int i = br * block_size; i <= r; i++) {

a[i] += val;

sum[br] += val;

}

}

}

// 区间查询 [l, r] 的和

long long query(int l, int r) {

long long res = 0;

int bl = l / block_size;

int br = r / block_size;

if (bl == br) {

for (int i = l; i <= r; i++)

res += a[i] + add[bl];

} else {

for (int i = l; i < (bl + 1) * block_size; i++) {

res += a[i] + add[bl];

}

for (int i = bl + 1; i < br; i++)

res += sum[i] + (long long)add[i] * block_size;

for (int i = br * block_size; i <= r; i++)

res += a[i] + add[br];

}

return res;

}

int main() {

ios::sync_with_stdio(false);

cin.tie(0);

// 读入 n、数组 a

// init();

// 处理 update / query

return 0;

}

用法

- 块大小默认: sqrt(n) ,最常用

- update(l, r, val) :区间 [l, r] 加 val

- query(l, r) :查询区间和

- 下标从 1 开始,符合竞赛习惯

http://www.jsqmd.com/news/369780/

相关文章:

  • 闭眼入!自考必备AI论文写作软件,千笔ai写作 VS WPS AI
  • 已读不回 387 次后,AI 把我的“垃圾简历”改成了面邀收割机
  • 从此告别拖延 8个降AIGC工具测评:本科生降AI率必备指南
  • 雷视一体机RV943产品易用性界面检测车流量功能调试指导
  • nw打包成exe文件
  • 别再瞎找了!专科生论文神器 —— 千笔·专业学术智能体
  • 聊聊郑东新区口碑好的海鲜烧烤喝酒好去处有哪些 - 工业设备
  • 照着用就行:自考必备的降AI率平台,千笔·降AIGC助手 VS 灵感ai
  • Linux命令-lsb_release(显示发行版本信息)
  • 2026年成都地区口碑好的技工学校推荐,深度剖析成都新华高级技工学校专业度 - myqiye
  • 三维扫描数据怎么对接MES系统?标准接口协议+4款推荐产品解析! - 匠言榜单
  • 2026年市场优质的安检机公司怎么找,智能安检/金属探测门/安检仪/安检门/安检设备/安检机,安检机公司推荐榜单 - 品牌推荐师
  • 高效写论文!2026 AI 学术神器排行榜,效率飙升 300%
  • 2026年成都机电一体化培训学校排名,哪家性价比高值得选 - 工业品网
  • 2026年青春期男孩叛逆难管?家庭教育新策略助力成长,孩子网瘾/亲子关系修复/问题青少年/戒网瘾,家庭教育基地有哪些 - 品牌推荐师
  • 2026年自动称重仪选购攻略,靠谱厂家慧芯科技怎么收费 - mypinpai
  • 2026年浙江好用工程材料公司盘点,细聊圣铂尔产品特色 - 工业设备
  • 新手也能上手 AI论文工具 千笔AI VS PaperRed,专科生写作更轻松!
  • Windows 11 终极性能优化指南
  • 2026年口碑好的全自动双面胶机供应商排名,江苏企业居前 - myqiye
  • 01-快速上手
  • 2026年佛山公寓床垫优质厂家排名,这些实力供应商值得关注 - mypinpai
  • 【机器人栅格路径规划】基于改进的蚁群算法机器人栅格地图最短路径规划附Matlab代码
  • 从“能对话”到“能办事”:政务服务机器人落地案例与关键技术深度解析 - 智造出海
  • 【日记】朋友送了一个香香软软草莓小蛋糕(x(1569 字)
  • PROTO_V4 整数传输协议详解:一款轻量级整数混淆加密方案
  • 2026年西安自建房,挑选建设企业的实用攻略,书桌/装修/榻榻米/基础/混凝土工/衣柜,自建房建设直销厂家推荐排行榜单 - 品牌推荐师
  • Qt for HarmonyOS 3D图片轮播组件开源鸿蒙构建实战
  • 【信号处理】传感器数据的时频分析(短时傅里叶+S变换+WVD+HHT变换)附Matlab代码
  • 从Vue到Spring Boot:一位Java全栈工程师的面试实录