
树状数组
lpc大菜逼
这个作者很懒,什么都没留下…
展开
-
「JXOI2017」加法题解
题解:主要思路:(1)首先要想到贪心,若想要满足最小数最大,那么我们尽量选区间长度长的修改方法修改,这样同是加a,但是长度长的加的更多,明显比较优越。(2)如何找到最大区间,我们可以在输入后对其左端点排序,令最小的左端点排在前面,然后要用时再依次插入优先队列,而优先队列即是要用来将区间的排在第一位(因为已经满足了左端点最小,右端点尽量大,那么区间也是最大,最划算的)(3)我们可以二分枚举最小的最大值,然后再从1——n循环,如果a[i]还小于mid,就说明还未到最大,可以继续修改区间使其最大,如果大于原创 2020-07-27 23:48:06 · 415 阅读 · 5 评论 -
一.二维 单点修改,区间查询【最好学完树状数组的基本操作再来】
一维:题意:1 i x表示i位置+x, 2 i j表示i——j的所有数之和。题解:这是一道灰常简单的模拟题,首先将原数组改为树状数组,写好模板代码,碰到一个直接输处即可,注意输出i——j为闭区间,所以答案应为sum(i) - sum(j - 1),此处sum是前缀和。代码:#include <iostream>#include <cstdio>using namespace std;int n, a[1000005], s, l, r, ww;long long原创 2020-07-26 23:26:31 · 262 阅读 · 0 评论