众所周知,树状数组是一个常用的数据结构。。。 1.为啥用树状数组: 如果用普通的前缀数组来维护前缀的信息,即使查询时o(1)的,但是修改就几乎要o(n),效率有时十分低下. 而树状数组却弥补了这一缺点,修改和查询都是o(logn)的 2.如何构建树状数组: 根据二次幂的性质,我们可以把一个数转化成一 ...
                            
                            
                                分类:
编程语言   时间:
2020-06-26 14:16:57   
                                阅读次数:
64
                             
                         
                    
                        
                            
                            
                                    ##题面 题目链接 ##思路 朴素的想法我们回去暴力修改区间元素,从而判断教室能否够用,但是看数据范围显然这会超时,既然区间问题我们立马想到前缀和和差分数组,and线段树和树状数组,这里不写树状数组和线段树的做法。我们看数据测试量,然后看了一下,这个答案具有线性性质,所以我们可以二分加速,所以我们二 ...
                            
                            
                                分类:
编程语言   时间:
2020-06-26 10:45:01   
                                阅读次数:
128
                             
                         
                    
                        
                            
                            
                                    求有多少在a前面的数比a小的思路: 在看之前,你必须了解树状数组的基本函数 inline ll lowbit(ll x) { return x&(-x); } inline void insert(ll x,ll y)//加入 { while(x<=n) { sum[x]+=y; x+=lowbit ...
                            
                            
                                分类:
编程语言   时间:
2020-06-25 23:39:01   
                                阅读次数:
83
                             
                         
                    
                        
                            
                            
                                    一道 树状数组套权值线段数的模板题。(然而我刚开始用线段树套平衡树做了) (orz hzwer) 题意 给定一个含有 n 个数的序列 \(a_1,a_2 \dots a_n\),需要支持两种操作: Q l r k 表示查询下标在区间$ [l,r]$中的第 k 小的数 C x y 表示将 \(a_x\ ...
                            
                            
                                分类:
其他好文   时间:
2020-06-25 15:20:20   
                                阅读次数:
72
                             
                         
                    
                        
                            
                            
                                求逆序对 描述 给定一个序列a1,a2,…,an,如果存在iaj,那么我们称之为逆序对,求逆序对的数目 输入 第一行为n,表示序列长度,接下来的n行,第i+1行表示序列中的第i个数。 N<=10^5。Ai<=10^5 输出 两行,第一行为所有逆序对总数,第二行为本质不同的逆序对总数。 输入 4 3  ...
                            
                            
                                分类:
编程语言   时间:
2020-06-25 13:37:59   
                                阅读次数:
64
                             
                         
                    
                        
                            
                            
                                    题目链接:https://www.luogu.com.cn/problem/P3608 方法一 用树状数组求逆序对先后扫两遍,一次从前往后,一次从后往前,算出每头奶牛左右两边比她高的数量。 最后统计一下。 #include <bits/stdc++.h> using namespace std; i ...
                            
                            
                                分类:
其他好文   时间:
2020-06-25 11:56:09   
                                阅读次数:
47
                             
                         
                    
                        
                            
                            
                                    树状数组是一类存储后缀和,更新后缀和,通过lowbit来限定后缀和的长度,利用二进制使得查询、更新的时间复杂度都在$O(logn)$的数据结构,码量十分小,常数优秀 注意:以下下代码部分未经过压力测试,不保证完全正确 单点修改+区间查询 树状数组 1 #include<bits/stdc++.h>  ...
                            
                            
                                分类:
编程语言   时间:
2020-06-24 23:43:14   
                                阅读次数:
73
                             
                         
                    
                        
                            
                            
                                树状数组 本博客仅贴出树状数组模板 #include <bits/stdc++.h> #define lowbit(x) (x & -x) using namespace std; const int N = 10010; int a[N], n; //a[x] += c void insert(i ...
                            
                            
                                分类:
编程语言   时间:
2020-06-23 19:27:25   
                                阅读次数:
33
                             
                         
                    
                        
                            
                            
                                    —》2020 年联考 A 卷 DAY1: T1:理清模型后发现数据有序维护起来会非常方便,就想到二叉搜索树。两种战士将合适温度“夹在中间”,就想到二分。正好前几天刚学了平衡树,就用它做了。但是很卡常,可惜没想到树状数组(其实是不会)。考试前一天晚上被蚊子扰醒了4次,早上脑子也是很不好,写这一道题就用 ...
                            
                            
                                分类:
其他好文   时间:
2020-06-21 19:44:16   
                                阅读次数:
71
                             
                         
                    
                        
                            
                            
                                    漆黑的晚上,九条可怜躺在床上辗转反侧。难以入眠的她想起了若干年前她的一次悲惨的 OI 比赛经历。那是一道基础的树状数组题。
给出一个长度为 $n$ 的数组 $A$,初始值都为 $0$,接下来进行 $m$ 次操作,操作有两种:
- $1\ x$,表示将 $A_x$ 变成 $(A_x + 1)\mo... ...
                            
                            
                                分类:
编程语言   时间:
2020-06-14 21:00:34   
                                阅读次数:
53