随笔分类 -  树状数组

摘要:dfs重新排序后将 查询一下区间个数即可 tree[i][c] 表示 i-lowbit(i) 颜色为c的个数 阅读全文
posted @ 2019-06-14 11:16 Minun 阅读(238) 评论(0) 推荐(0)
摘要:tree含义表示 i 这个数出现了几次 sum[i]即表示1-i的数出现了几次 i-sum[i]-1 就是第i位的逆序对位几个; 数字大的时候要离散化 阅读全文
posted @ 2019-05-20 19:52 Minun 阅读(201) 评论(1) 推荐(0)
摘要:树状数组求区间不同种类的数模板 树状数组来存储前缀和,对于每个数我们记录他上一次出现的位置, 把查询按照右端点从小到大排序 对于每个数我们对add(pre[i],-1) add(i,1); 每个数字只有他当前最后一个位置贡献次数(查询区间已排序) 最后sum[r]-sum[l-1]就是答案 阅读全文
posted @ 2019-05-20 19:48 Minun 阅读(129) 评论(0) 推荐(0)
摘要:对于每个数,我们记录上一次这个数出现的位置; 计算之间间隔了几个不同数x,如果一个桌子的容量>=x,那我们不用把书放回,如果桌子的容量<x,那么我们只能把书放回去这本书 定义 t[] 每次使t[x]++,也就是对于容量小于 x的桌子每次都要从新取书,对于大于等于x的桌子不用 最后累加起来,最后结果就 阅读全文
posted @ 2019-05-18 20:00 Minun 阅读(267) 评论(0) 推荐(0)
摘要:每个节点 tree[i]=a[i-2^k+1]+....+a[i] k为取最低位的1; 转变为二进制 例如 7: tree 0111 = a 0111 8: tree 1000 = a 0001 + a 0010 + a 0011 +...+ a 1000; 取最低位的1 修改: 7(111) an 阅读全文
posted @ 2019-05-15 20:19 Minun 阅读(137) 评论(0) 推荐(0)