树状数组
SSL_GYX
座右铭:言念君子,温其如玉。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【ybt】【数据结构 树状数组 课过 例6】区间修改区间查询
区间修改区间查询题目链接:YbtOJ解题思路我们可以把区间修改区间查询的差分与单点修改区间查询结合起来,也就是二维树状数组维护二维前缀和再加上差分。code#include<iostream>#include<cstdio>#define lb(x) (x&(-x))#define int long longusing namespace std;int n,m,p;int a,b,c,d,x;int tree[2050][2050][5];原创 2021-05-22 16:10:56 · 174 阅读 · 0 评论 -
【ybt】【数据结构 树状数组 课过 例5】单点修改区间查询
单点修改区间查询题目链接:YbtOJ解题思路模板题,二维树状数组维护前缀和。code#include<iostream>#include<cstdio>#define lb(x) (x&(-x))#define int long longusing namespace std;int n,m,q;int x,y,k;int a,b,c,d;int tree[5010][5010];void in(int x,int y,int z){原创 2021-05-22 12:08:49 · 135 阅读 · 0 评论 -
【ybt】【数据结构 树状数组 课过 例4】区间修改区间查询
区间修改区间查询题目链接:YbtOJ解题思路区间操作,我们可以想到差分。设差分数组为 ddd ,那么求 ∑i=1nai\sum\limits_{i=1}^na_ii=1∑nai 就可以转换为 ∑i=1n∑j=1idi\sum\limits_{i=1}^n\sum\limits_{j=1}^id_ii=1∑nj=1∑idi 。暴力枚举是 O(n2)O(n^2)O(n2) 的,我们考虑优化。我们可以发现:d1d_1d1 出现了 nnn 次,d2d_2d2 出现了 n−1n-1n−1原创 2021-05-22 10:10:41 · 186 阅读 · 0 评论 -
【ybt】【数据结构 树状数组 课过 例3】严格上升子序列数
严格上升子序列数题目链接:YbtOJ解题思路我们设 fi,jf_{i,j}fi,j 表示以 iii 结尾,长度为 jjj 的序列数。如果直接暴力做,那是 O(n3)O(n^3)O(n3) 的时间复杂度。我们可以离散化,然后用树状数组维护每一种方案数的情况。其实和逆序对挺像的说(无端感受)code#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>原创 2021-05-22 08:33:30 · 307 阅读 · 0 评论 -
【ybt】【数据结构 树状数组 课过 例2】逆序对
逆序对题目链接:YbtOJ/Luogu解题思路我们可以进行离散化,然后用树状数组维护下标,每次在树状数组中找下标比当前小的就可以了。code#include<algorithm>#include<iostream>#include<cstdio>#define lb(x) (x&(-x))#define int long longusing namespace std;int n,ans;int c[5000010];struct原创 2021-05-21 21:38:20 · 199 阅读 · 0 评论 -
【ybt】【数据结构 树状数组 课过 例1】单点修改区间查询
单点修改区间查询题目链接:YbtOJ/luogu解题思路树状数组模板题,不解释。code#include<iostream>#include<cstdio>#define int long long#define lb(x) (x&(-x))using namespace std;int n,q;int c[1000010];void in(int x,int y){ for(;x<=n;x+=lb(x)) c[x]+=y;}原创 2021-05-20 16:37:40 · 144 阅读 · 0 评论
分享