输入一个长度为n的数组,有以下两种操作: 1.输入一个数m,输出数组中下标1~m的 前缀和 2.对指定下标的 数值进行修改 我们有两种思路,一种是for循环累加,另一种是利用前缀和数组。两种算法多 次操作时间复杂度在O(n^2),我们不妨来用树状数组进行操作。 树状数组介绍(BIT,Fenwick ...
分类:
编程语言 时间:
2020-05-12 20:47:32
阅读次数:
103
地址:http://acm.hdu.edu.cn/showproblem.php?pid=1754 解析:先说update操作。c[]表示所管辖的区间范围里的最大值。 void update(int id,int x) { while(id<=n) { c[id]=x; for(int i=1;i< ...
分类:
编程语言 时间:
2020-05-12 18:43:37
阅读次数:
55
树状数组 一、 引言 解题过程中,我们有时需要维护一个数组的前缀和S[i]=A[1]+A[2]+A[3]+A[4]+…+A[i]。 但是不难发现,如果我们修改了一个 A[i], S[i]、S[i+1]…S[n]都会发生变化。 可以说,每次修改 A[i]后,调整前缀和 S 在最坏的情况下会需要 O(n ...
分类:
编程语言 时间:
2020-05-12 16:40:29
阅读次数:
67
地址:https://ac.nowcoder.com/acm/contest/5477/F 解析:其实并不需要关心它具体是怎么构造的,那样的是很麻烦的。。。明确一点,某个位置出现的次数越多,就需要给它赋越大的值,既当前sum=出现次数*x。出现次数,可以通过差分数组或线段树维护一下,然后排个序,按顺 ...
分类:
编程语言 时间:
2020-05-11 00:50:32
阅读次数:
76
Redis集群方案 1.1 客户端分区方案 客户端 就已经决定数据会被 存储 到哪个 节点或者从哪个 节点 读取数据 。其主要思想是采用 哈希算法 将 数据的 进行散列,通过 函数,特定的 会 映射 到特定的 节点上。 客户端分区方案 的代表为 ,`Redis Sharding Redis Clus ...
分类:
其他好文 时间:
2020-05-10 01:05:34
阅读次数:
50
差分[差分数组 & 树状差分] 1. 差分数组 差分数组的定义: 记录当前位置的数与上一位置的数的差值. | 原数组 ai | 9 | 4 | 7 | 5 | 9 | | | | | | | | | 差分数组 bi | 9 | 5 | 3 | 2 | 4 | | 差分数组的前缀和 | 9 | 4 | ...
分类:
编程语言 时间:
2020-05-09 20:41:19
阅读次数:
69
本地搬运~ 关于树状数组的学习,强烈推荐这个视频:https://www.bilibili.com/video/av26371798?from=search&seid=2141442207537065040 1:树状数组:查询和修改复杂度都为log(n)的数据结构,本身可用于单点修改区间查询,加入辅 ...
分类:
编程语言 时间:
2020-05-06 22:06:50
阅读次数:
95
树状数组简单来看就是一个维护前缀和的数据结构,它相当于线段树去掉了所有的右子树,需要查询时,通过信息拼接来达到查询目的,基础应用为 **(单点更新,区间查询)** **(区间更新,单点查值)** (多了个差分) **(区间修改,区间查询)** (通过数学推导得出我们需要维护两个树状数组) 具体内容参 ...
分类:
编程语言 时间:
2020-05-05 23:35:57
阅读次数:
76
想法类似:http://www.voidcn.com/article/p-ravllcze-gb.html 在阅读大项目代码的过程中,希望代码项目类之间以及类内部函数之间的调用关系一目了然,比如以树状形式呈现并可缩放视图和细节。 要在github上找找看开源的项目。 ...
分类:
编程语言 时间:
2020-05-05 18:17:14
阅读次数:
73
题目 https://www.luogu.com.cn/problem/P1908 题目分析 树状数组的使用原因 可以开一个数组c[maxn],来记录前面数据的出现情况,初始化为0;当数据a出现时,就令c[a]=1。这样的话,欲求某个数a的逆序数,只需要算出在当前状态下c[a+1,maxn]中有多少 ...
分类:
编程语言 时间:
2020-05-04 21:42:08
阅读次数:
95