数据结构
文章平均质量分 56
Sun——
这个作者很懒,什么都没留下…
展开
-
线段树 (lazy标记)--- 模板
线段树A:建树B:单点更新C:区间查询D:区间更新 (lazy标记)每次并不断的分,不断的分,更新,查询 的操作都是 log(N)。A:建树const int maxx=100019;int a[maxx],tree[maxx*4];void build(int node,int start,int endd) //build(0,1,10) 从0开始建树。start,endd 是实际的数组的下标范围{ if(start==endd) //到达叶子节点 { t原创 2021-09-18 17:08:10 · 586 阅读 · 0 评论 -
牛客---出题人的手环 (离散化 + 树状数组 求逆序对数)
出题人的手环 题目链接: 出题人的手环树状数组求逆序对数将尾部的数拿到首部后,逆序对数的变化=原逆序对数+比它小的数的个数–比它大的数的个数注意: 1, 减完之后可能会出现负数,要加mod后取模。 &原创 2021-09-08 19:04:23 · 327 阅读 · 0 评论 -
树状数组--求逆序对数
树状数组–求逆序对数借助树状数组的前缀和 来表示出有多少个数比待处理数小。所处位置的下标减去它前面小于等于它的个数,就求得它前面有多少个比它大的数的个数例: 5 4 2 3 1 5更新一个数,处理一个,ans=0;第一步:4 &n原创 2021-09-08 17:11:52 · 274 阅读 · 1 评论 -
树状数组 -- 理解与模板
树状数组A:简述B:单点修改,建树C:查询D:模板题A:简述/****************单点修改,前缀和,区间和核心:巧妙的运用了类似二分的思想对数组进行了 按位的划分与关联*****************/注意二进制中的1的位置和包含关系。最低为的1的位置决定了这个数组下含多少个点(1000 : 包含8个(2^(4-1) );;11100:包含4个(2^(3-1))) (图片来源于网络)B:单点修改,建树******* 注意:不能使用0位置,由于0加0一直0,会死循环。***原创 2021-09-17 23:46:35 · 335 阅读 · 0 评论