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

h5网站怎么做api对接赣州人才招聘网

h5网站怎么做api对接,赣州人才招聘网,wordpress网站mip改造,长沙网红打卡地题目描述 如题,已知一个数列 {ai}\{a_i\}{ai​},你需要进行下面两种操作: 将某区间每一个数加上 kkk。求出某区间每一个数的和。 输入格式 第一行包含两个整数 n,mn, mn,m,分别表示该数列数字的个数和操作的总个数。 第二行包含 n…

题目描述

如题,已知一个数列 {ai}\{a_i\}{ai},你需要进行下面两种操作:

  1. 将某区间每一个数加上 kkk
  2. 求出某区间每一个数的和。

输入格式

第一行包含两个整数 n,mn, mn,m,分别表示该数列数字的个数和操作的总个数。

第二行包含 nnn 个用空格分隔的整数 aia_iai,其中第 iii 个数字表示数列第 iii 项的初始值。

接下来 mmm 行每行包含 333444 个整数,表示一个操作,具体如下:

  1. 1 x y k:将区间 [x,y][x, y][x,y] 内每个数加上 kkk
  2. 2 x y:输出区间 [x,y][x, y][x,y] 内每个数的和。

输出格式

输出包含若干行整数,即为所有操作 2 的结果。

输入输出样例 #1

输入 #1

5 5
1 5 4 2 3
2 2 4
1 2 3 2
2 3 4
1 1 5 1
2 1 4

输出 #1

11
8
20

说明/提示

对于 15%15\%15% 的数据:n≤8n \le 8n8m≤10m \le 10m10
对于 35%35\%35% 的数据:n≤103n \le {10}^3n103m≤104m \le {10}^4m104
对于 100%100\%100% 的数据:1≤n,m≤1051 \le n, m \le {10}^51n,m105ai,ka_i,kai,k 为正数,且任意时刻数列的和不超过 2×10182\times 10^{18}2×1018

【样例解释】

solution

线段树是一种常用的数据结构,实现区间查询和区间修改,时间和空间复杂度都是O(nlogn)O(nlogn)O(nlogn)
其基本原理是用一个二叉树点维护一个区间的数据,然后它的两个字节点各负责半个区间,将统计信息汇总给该节点

代码

#include <sstream>
#include "iostream"
#include "cmath"
#include "vector"
#include "algorithm"using namespace std;
const int N = 1e5 + 5;int n;
long long b[N];struct node {long long sum, tag;
} a[4 * N];// 将父节点的 tag 信息向下分摊
void push_down(int rt, int l, int r) {int m = r + l >> 1;a[rt * 2].sum += a[rt].tag * (m - l + 1);a[rt * 2].tag += a[rt].tag;a[rt * 2 + 1].sum += a[rt].tag * (r - m);a[rt * 2 + 1].tag += a[rt].tag;a[rt].tag = 0;
}void push_up(int rt) {a[rt].sum = a[rt * 2].sum + a[rt * 2 + 1].sum;
}void build(int rt, int l, int r) {a[rt].tag = 0;if (l == r) {a[rt].sum = b[l];return;}int m = l + r >> 1;build(rt * 2, l, m);build(rt * 2 + 1, m + 1, r);push_up(rt);
}void update(int rt, long long k, int l, int r, int L, int R) { // l, r 是 rt管理的区间, L R是修改的区间, k 是修改的量// 整个区间都要增加kif (L <= l && r <= R) {a[rt].sum += (r - l + 1) * k;a[rt].tag += k;return;}push_down(rt, l, r); // tag 向下传递int m = l + r >> 1;if (L <= m) update(rt * 2, k, l, m, L, R);if (R > m) update(rt * 2 + 1, k, m + 1, r, L, R);push_up(rt); // sum 向上汇总
}long long query(int rt, int l, int r, int L, int R) {// 整个区间都要if (L <= l && r <= R) {return a[rt].sum;}push_down(rt, l, r);int m = l + r >> 1;long long s = 0;if (L <= m) s += query(rt * 2, l, m, L, R);if (R > m) s += query(rt * 2 + 1, m + 1, r, L, R);return s;
}int main() {int m;cin >> n >> m;for (int i = 1; i <= n; i++) cin >> b[i];build(1, 1, n);for (int i = 0; i < m; i++) {int op, l, r;long long k;cin >> op >> l >> r;if (op == 1) {cin >> k;update(1, k, 1, n, l, r);} else {cout << query(1, 1, n, l, r) << endl;}}}

结果

在这里插入图片描述

http://www.dtcms.com/a/549631.html

相关文章:

  • 生产管理系统详解:物料清单bom 工序,工艺路线中的工序和工艺资源他们之间有什么关联和区别
  • 发布元服务配置应用分类、标签和资质信息(仅分发手表设备)
  • 成绩查询系统如何制作?
  • 中国建设银行信用卡官网站首页个人做商机网站如何盈利
  • springboot酒店客房管理系统设计与实现(代码+数据库+LW)
  • 交叉编译工具链深度解析 --静态库与动态库编译实战指南
  • uni-app 开发APP应用媒体处理与文件管理功能
  • 网站建设scyiyou百度竞价推广一个月多少钱
  • 基于整数MCU的FOC控制定标策略深度解析
  • [HDiffPatch] 差异算法 | `serialize_compressed_diff`
  • Pycatia二次开发基础代码解析:实例名称获取与几何显示控制技术解析
  • 小迪安全v2023学习笔记(一百四十天)—— Linux系统权限篇VulnhubPATH变量NFS服务Cron任务配合SUID
  • 做网站前端wordpress打字烟花
  • 新能源汽车动力系统拆装与检测实训MR软件介绍-比亚迪秦EV标准版
  • 力扣:214. 最短回文串(Python3)
  • 基于Jdk17+SpringBoot3AI智慧教育平台,告别低效学习,AI精准导学 + 新架构稳跑
  • 论坛网站太难做没人百度推广客户端app
  • Shell实用实例2
  • Go语言:解决 “package xxx is not in std”的思路
  • 给排水干管工程量-连续测量得心应手
  • 麦克斯韦方程扩展版本,用来解释不对称情况下的公式
  • 哈尔滨网站建设的公司哪家好广安发展建设集团门户网站
  • 批量转双层PDF(可识别各种语言) 中文绿色版
  • 北京网站关键词排名销售管理软件排名
  • TCP 扫描中的“有效响应”过滤器解析
  • 我用ChatGPT,给RabbitMQ加了个连接池
  • 做电脑网站手机能显示不出来怎么办you物公馆网站建设
  • Rust 所有权:内存安全的基石与实践指南
  • PostGreSQL 数据库,备份和恢复命令,使用pg_dump命令备份
  • 蓝桥杯高校新生编程赛第二场题解——Java