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

题解:P13979 数列分块入门 4

区间加法和区间询问,很明显是用线段树啦!

线段树通过懒标记实现了 $log$ 的时间复杂度,保证了在 $3e5$ 范围内不会超时。这道题重点是输出是非负的余数,所以要这样输出:

cout << (query(1, x, y) % (k + 1) + (k + 1)) % (k + 1) << "\n";

而不是:

cout << abs(query(1, x, y) % (k + 1)) << "\n";

代码如下:

#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 3e5 + 5;
struct node {int l, r, sum, tag;
}tr[N << 2];
int n, m, op, x, y, k, a[N];
inline void updata(int p){tr[p].sum = tr[p << 1].sum + tr[p << 1 | 1].sum;
}
inline void downdata(int p){int mid = (tr[p].l + tr[p].r) >> 1;if(!tr[p].tag) return ;tr[p << 1].sum += (mid - tr[p].l + 1) * tr[p].tag;tr[p << 1].tag += tr[p].tag;tr[p << 1 | 1].sum += (tr[p].r - mid) * tr[p].tag;tr[p << 1 | 1].tag += tr[p].tag;tr[p].tag = 0;
}
inline void build(int p, int l, int r){tr[p].l = l, tr[p].r = r;if(l == r){tr[p].sum = a[r];return ;}int mid = (l + r) >> 1;build(p << 1, l, mid);build(p << 1 | 1, mid + 1, r);updata(p);
}
inline void add(int p, int l, int r, int v){if(tr[p].l >= l && tr[p].r <= r){tr[p].sum += (tr[p].r - tr[p].l + 1) * v;tr[p].tag += v;return ;}downdata(p);int mid = (tr[p].l + tr[p].r) >> 1;if(l <= mid) add(p << 1, l, r, v);if(r > mid) add(p << 1 | 1, l, r, v);updata(p);
}
inline int query(int p, int l, int r){if(tr[p].l >= l && tr[p].r <= r) return tr[p].sum;downdata(p);int mid = (tr[p].l + tr[p].r) >> 1;int cnt = 0;if(l <= mid) cnt += query(p << 1, l, r);if(r > mid) cnt += query(p << 1 | 1, l, r);return cnt;
}
signed main(){ios::sync_with_stdio(0);cin.tie(0), cout.tie(0);cin >> n;int m = n;for(int i = 1; i <= n; i++) cin >> a[i];build(1, 1, n);while(m--){cin >> op >> x >> y >> k;if(!op) add(1, x, y, k);else cout << (query(1, x, y) % (k + 1) + (k + 1)) % (k + 1) << "\n";}return 0;
}

管理大大求过!

http://www.wxhsa.cn/company.asp?id=1085

相关文章:

  • ICPC模拟赛#1
  • 从基础到实战:一文吃透 JS Tuples 与 Records 的所有核心用法
  • YOLO + OpenPLC + ARMxy:工业智能化视觉识别、边缘计算、工业控制的“三位一体”解决方案
  • NKOJ全TJ计划——NP4582
  • VibeCoding On Function AI Deep Dive:用 AI 应用生产 AI 应用
  • [题解] P13777 「o.OI R2」Meowalkane
  • Kubernetes Pod控制器
  • kingbase金仓数据库的用户权限管理
  • C++14之exchange
  • Blazor之第三方登录
  • 深入解析:物联网时序数据库IoTDB是什么?
  • wpf 后台获取资源字典对象
  • POJ 3601 Subsequence
  • 【IEEE出版】第十届计算机技术与机械电气工程国际学术论坛(ISCME 2025)
  • Python-httpx库的post请求的几种参数的区别
  • 精准把控人力,PJMan “负荷分析” 助力项目高效推进
  • 92. 递归实现指数型枚举
  • Logstash、Filebeat和Fluent比较
  • 车载电动充气泵芯片方案设计
  • [题解]P4281 [AHOI2008] 紧急集合 / 聚会
  • 【API接口】最新可用红果短剧接口
  • 微信个人号接口
  • 数据结构与算法-28.图
  • 剪映如何将草稿分享给别人?
  • 测试开发私教服务班4.0:大厂导师1对1带你突破职业瓶颈!
  • 深入理解Java对象:从创建到内存访问的JVM底层机制
  • 【AP出版】第八届人文教育与社会科学国际学术会议(ICHESS 2025)
  • 从零开始搭建Qwen智能体:新手也能轻松上手指南
  • # 简单贪心题(greedy)
  • 免安装在线录屏神器推荐:纯前端屏幕录制工具使用指南