摘要: 1、题目 给定 n 个数组成的一个数列,规定有两种操作,一是修改某个元素,二是求子数列 [a,b] 的连续和。 输入格式 第一行包含两个整数 n 和 m,分别表示数的个数和操作次数。 第二行包含 n 个整数,表示完整数列。 接下来 m 行,每行包含三个整数 k,a,b (k=0,表示求子数列[a,b 阅读全文
posted @ 2021-03-01 16:01 Frank_7 阅读(78) 评论(0) 推荐(0) 编辑
摘要: 1、前言 线段树相较于树状数组、是一种较为复杂的数据结构。常用的操作有以下两种: 1、单点修改O(logn) 2、区间查询O(logn) 2、模板 常用的操作函数有以下几种 struct Node { int l, r; int sum; }tr[N * 4]; //一般最大是 4 * N 1、更新 阅读全文
posted @ 2021-03-01 15:11 Frank_7 阅读(97) 评论(0) 推荐(0) 编辑
摘要: 树状数组 树状数组用起来的时间复杂度为O(logn)、操作一共有以下两种: 1、给某个位置上的数加上一个数 void add(int x, int v) { for (int i = x; i <= n; i += lowbit(i)) tr[i] += v; } 2、求某一个前缀和 int que 阅读全文
posted @ 2021-03-01 15:05 Frank_7 阅读(66) 评论(0) 推荐(0) 编辑
摘要: 1、题目 给定 n 个数组成的一个数列,规定有两种操作,一是修改某个元素,二是求子数列 [a,b] 的连续和。 输入格式 第一行包含两个整数 n 和 m,分别表示数的个数和操作次数。 第二行包含 n 个整数,表示完整数列。 接下来 m 行,每行包含三个整数 k,a,b (k=0,表示求子数列[a,b 阅读全文
posted @ 2021-03-01 09:05 Frank_7 阅读(103) 评论(0) 推荐(0) 编辑