![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
树状数组
树状数组
VL——MOESR
ga
展开
-
【数据结构练习】平均数【二分答案】【树状数组】
二分答案+树状数组原创 2022-10-19 19:57:35 · 91 阅读 · 0 评论 -
【SSL集训DAY2】Sort【树状数组】
树状数组原创 2022-08-06 16:21:10 · 63 阅读 · 0 评论 -
【集训DAY15】简单计算【树状数组】【数学】
树状数组+数学原创 2022-07-25 16:22:01 · 41 阅读 · 0 评论 -
【集训DAY5】【Luogu_P6339】[COCI2007-2008#2] TURBO && Sort 【树状数组】
树状数组原创 2022-07-15 19:56:29 · 103 阅读 · 0 评论 -
【YBTOJ进阶训练指导】交换序列【树状数组】
树状数组原创 2022-03-02 20:04:44 · 171 阅读 · 0 评论 -
【YBTOJ进阶训练指导】星星问题【树状数组】
树状数组原创 2022-03-02 19:51:50 · 152 阅读 · 0 评论 -
【51nod_3111】小明爱拦截
题目描述思路:和这道题基本一样,只是编号倒过来而已codecodecode#include<iostream>#include<cstdio>#include<algorithm>using namespace std;long long n;long long c[201110], dp[201110];struct node{ long long x, id;}a[201110];bool cmp(node x, node y)原创 2022-01-12 21:06:52 · 80 阅读 · 0 评论 -
【SSL_1459】求最长不下降子序列
注!!!第三个数据点和题目描述不符合!!!思路:codecodecode#include<iostream>#include<cstdio>#include<algorithm>using namespace std;long long n;long long c[201110], dp[201110];struct node{ long long x, id;}a[201110];bool cmp(node x, node y).原创 2022-01-12 20:41:26 · 158 阅读 · 0 评论 -
【POJ_2352】Stars
题目描述思路:先按横坐标大小排序,然后通过纵坐标做树状数组就可以统计了codecodecode#include<iostream>#include<cstdio>#include<algorithm>using namespace std;long long n, c[1001000], ans[1001000];struct node{ long long x, y;}a[1001000];bool cmp(node x, node原创 2022-01-12 16:17:07 · 59 阅读 · 0 评论 -
【51nod_3122】小陶的疑惑2
题目描述思路:这道题用差分树状数组就可以解决codecodecode#include<iostream>#include<cstdio>using namespace std;long long n, m, a[1010010];long long c[1010101];long long lowbit(long long x){ return x&-x;} void add(long long x, long long y){ f原创 2022-01-12 16:12:58 · 150 阅读 · 0 评论 -
【51nod_3121】小陶与杠铃片
题目描述思路:我们可以由归并排序过程可得,每交换一次就消除一个逆序对,所以操作数就是逆序对个数这里用树状数组求,按照输入进来的顺序,用树状数组统计就可以了codecodecode#include<iostream>#include<cstdio>#include<algorithm>using namespace std;long long n, a[1010000];long long c[1010000];long long lowb原创 2022-01-12 16:04:31 · 147 阅读 · 0 评论 -
【51nod_3120】小陶的疑惑
题目描述思路:树状数组模板题codecodecode#include<iostream>#include<cstdio>using namespace std;long long a[1010000], c[1000100];long long n, m;long long lowbit(long long x){ return x&-x;}void add(long long x, long long y){ for(; x<原创 2022-01-12 16:00:19 · 161 阅读 · 0 评论 -
2021.08.16【NOIP提高B组】模拟 【USACO 2021 February Contest, Platinum】Problem 1 No Time to Dry
思路:用一个栈维护,然后取出相等的配对,用树状数组求答案就行codecodecode#include<iostream>#include<cstdio>#include<cmath>#include<queue>using namespace std;int n, m, top;int a[1010000], st[1010100], c[1010100], ans[1010000];vector<pair<int,..原创 2021-08-16 20:41:41 · 145 阅读 · 0 评论 -
2021.08.14【NOIP提高B组】模拟 【USACO 2021 US Open, Gold】United Cows of Farmer John
思路:维护一个数上一次出现的位置,用树状数组,然后每次累加答案codecodecode#include<iostream>#include<cstdio>using namespace std;long long n, a[1010000], c[1001000], f[1001000];long long lowbit(long long x){ return x&(-x);}long long ask(long long x){ l..原创 2021-08-15 21:03:44 · 247 阅读 · 0 评论 -
【YBTOJ】区间修改区间查询2
思路:和一维区间修改区间查询一样,用二维树状数组做,式子就是:∑i=1n∑j=1ma[i]=∑i=1n∑j=1m∑k=1i∑h=1jdi,j\sum_{i=1}^{n}\sum_{j=1}^{m}a[i]=\sum_{i=1}^{n}\sum_{j=1}^{m}\sum_{k=1}^{i}\sum_{h=1}^{j}d_{i,j}i=1∑nj=1∑ma[i]=i=1∑nj=1∑mk=1∑ih=1∑jdi,j分别用4个树状数组维护即可...原创 2021-05-22 15:03:36 · 63 阅读 · 0 评论 -
【YBTOJ】单点修改区间查询2
思路:二维树状数组codecodecode#include<iostream>#include<cstdio>#include<cstring>using namespace std;long long n, m;long long c[5000][5000];long long lowbit(long long x){return x & -x;}void add(long long x, long long y, long ..原创 2021-05-22 11:22:27 · 52 阅读 · 0 评论 -
【YBTOJ】区间修改区间查询
思路:用一个差分数组,将x~y每一个数加k,只需要在x位置加k,在y+1位置减k就行了那么此时a[i]就是差分数组中1~i的和∑i=1nai=∑i=1n∑j=1idi\sum_{i=1}^{n}a_i=\sum_{i=1}^{n}\sum_{j=1}^{i}d_ii=1∑nai=i=1∑nj=1∑idi然后可以变成∑i=1nai=∑i=1n(di∗(n+1)−di∗i)\sum_{i=1}^{n}a_i=\sum_{i=1}^{n}(d_i*(n+1)-d_i*i)i=1∑nai..原创 2021-05-22 09:46:19 · 132 阅读 · 0 评论 -
【YBTOJ】严格上升子序列数
思路:首先不难想出最暴力的做法,三重循环的DP,直接炸开考虑怎么优化只有当a[k]<a[i]的时候才会进行累加,那不就是一个类似于逆序对的做法吗?然后直接用树状数组统计就行了codecodecode#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>using namespace std;long long T, t, tot;lon..原创 2021-05-21 21:26:46 · 174 阅读 · 0 评论 -
【YBTOJ】逆序对
思路:我们可以先把a数组离散化然后我们用一个树状数组将a[i]的位置加1,然后去寻找比他先出现的且a[i]比他大的,这样用树状数组即可完成codecodecode#include<iostream>#include<cstdio>#include<algorithm>using namespace std;int n, tot;int a[1000100], p[1001000], c[1000100];void lsh(){ for(..原创 2021-05-21 18:48:49 · 81 阅读 · 0 评论 -
【YBTOJ】单点修改区间查询
codecodecode#include<iostream>#include<cstdio>using namespace std;long long n, q;long long a[1001000], c[1000100];long long lowbit(long long x){ return x&-x; }void add(long long x, long long y){ for(; x<=n; x+=lowbit(x)) ..原创 2021-05-20 16:43:47 · 79 阅读 · 0 评论 -
【2020年9月12日普及组】树
题目描述小L非常喜欢树。最近,他发现了一棵有趣的树。这棵树有n个节点(1到n编号),节点i有一个初始的权值ai。这棵树的根是节点1。这棵树有一个特殊的性质:当你给节点i的权值加 val 的时候,节点i的所有儿子的权值都会加 -val。注意当你给节点i的儿子的权值加 -val 时,节点i的这个儿子的所有儿子的权值都会加 -(-val),以此类推。样例说明可以很好地帮助你理解这个性质。有2种操作:操作(a).“1 x val”表示给节点x的权值加val。操作(b).“2 x”输出节点x当前的权值。为原创 2020-09-12 16:14:31 · 212 阅读 · 0 评论 -
【Luogu_CF261D】Maxim and Increasing Subsequence
题意翻译给你一个长度为nn的BB数组,AA表示BB数组复制tt遍后首尾相连后的数组,求AA的最长上升子序列 有kk组询问 maxbmaxb表示BB数组中最大的数思路:首先我们可以得到:当ttt大于当前数列不同数字的个数时,答案就是不同数字的个数。因为它是严格单调递增,所以在每个周期里选一个数就可以组成一个上升序列接下来处理上述不成立的情况我们可以设一个f[i][j]f[i][j]f[i][j]表示当前周期的最长序列长度,由于数据太大,所以要开滚动数组。当枚举到当前周期时,我们考虑怎样转移。原创 2020-08-18 15:54:09 · 112 阅读 · 0 评论 -
【POJ3321】Apple Tree
题目大意:思路:算法分析:对于棵树进行dfsdfsdfs遍历,并记录每一个点的dfsdfsdfs序号st[i]st[i]st[i],在一个节点的所有儿子都被遍历过后,记录当前en[i]en[i]en[i]为当前最大dfsdfsdfs序号的节点的dfsdfsdfs序号。于是,我们把问题转换为将某一点的权值改变,询问区间[st[x],en[x]][st[x], en[x]][st[x],en[x]]的和树状数组可以轻松实现这些操作。代码:#include<iostream>#i原创 2020-08-18 09:13:42 · 99 阅读 · 0 评论 -
【SSL1502】校门外的树
Description校门外有很多树,有苹果树,香蕉树,有会扔石头的,有可以吃掉补充体力的……如今学校决定在某个时刻在某一段种上一种树,保证任一时刻不会出现两段相同种类的树,现有两个操作:K=1,读入l,r表示在l~r之间种上的一种树K=2,读入l,r表示询问l~r之间能见到多少种树(l,r>0)Input第一行n,m表示道路总长为n,共有m个操作接下来m行为m个操作Output对于每个k=2输出一个答案Sample Input5 41 1 32 2 51 2 42 3原创 2020-08-17 21:20:53 · 105 阅读 · 0 评论 -
【Ural_1028】Stars
【问题描述】天空中有一些星星,这些星星都在不同的位置,每个星星有个坐标。如果一个星星的左下方(包含正左和正下)有k颗星星,就说这颗星星是k级的。【编程任务】给定星星的位置,输出各级星星的数目。 给定n个点,定义每个点的等级是在该点左下方(含相等)的点的数目,试统计每个等级有多少个点。(n<=15000,0<=x,y<=32000)思路:树状数组,设一个ansansans记录当前价值有多少个点,用树状数组每次做一次累加代码:#include<iostream>原创 2020-08-17 20:04:30 · 238 阅读 · 1 评论 -
洛谷【树状数组1】
链接我们学到了一个新知识:树状数组链接代码:#include<iostream>using namespace std;int m,n,t,x,y,a[10100010],c[10001000];int lowbit(int x){ return x&(-x);}void up(int x,int k){ for(int i=x;i<=n;i+=lo...原创 2020-02-12 14:29:54 · 130 阅读 · 0 评论