树状数组
WINDZLY
我不知道最后会得到什么样的结果,但我知道不努力我什么也得不到
展开
-
区间最大公约数
题目链接:https://www.acwing.com/problem/content/description/247/可以用常数小的树状数组来求和,用线段树单点修改2333这个题需要用到更相减损术gcd(a,b) == gcd(a,b- a),数学归纳法可以推广gcd(a,b,c) == gcd(a,b - a,c -b)这样我们可以维护一个b数组等于a[i] - a[i - 1...原创 2019-05-01 20:09:52 · 1050 阅读 · 0 评论 -
树状数组
想出树状数组的大佬真是个天才将需要求和的数组分布在叶子节点上,A1 - A8在这里我们引进一个知识点 lowbit 他求的是x的二进制最低位的1后面跟了几个0的长度的2次幂举个例子 1000001000,这个二进制最低位的1跟了3个0,那么他的lowbit就等于2的3次幂开一个C数组 将他里面的值等于C[i] = A[i - lowbit(i) + 1] + A[i -...原创 2019-03-16 15:06:13 · 150 阅读 · 1 评论 -
一个简单的整数问题2
题目链接:https://www.acwing.com/problem/content/description/244/对于区间的修改和区间求和(树状数组和线段树)树状数组在区间求和的时候需要维护两个数组,两个数组都是差分至于怎么区间求和我们先假设所有的都加上了某一个区间和然后减去那些多加上的代码实现线段树区间求和我们需要用到延迟标记让时间复杂度降到logn树状数组代码...原创 2019-05-03 00:35:25 · 207 阅读 · 0 评论 -
区间中位数(有序表or树状数组)
题目链接:http://47.93.252.151/problem.php?id=1157有序表直接删除第一个数输出中间就行树状数组维护的是一个和加上一个二分(多看书 lydnb 感谢lyd给我灵感2333)有序表代码:#include <bits/stdc++.h> typedef int ll; using namespace std; cons...原创 2019-05-03 23:24:09 · 2181 阅读 · 1 评论