Processing math: 100%

随笔分类 -  数据结构——线段树和树状数组

摘要:T3 "颜色" 100/100 对于这题由于数据范围小,有一种神奇的做法,我们可以把每个值随机赋值,但是保证相同颜色的和为0,就代表消去了这个颜色,我们只要取寻找合法区间就行,合法区间的寻找只要找相同前缀和就行,因为相同前缀和之间这一段为0,也就代表这一段是合法区间。 代码 cpp include 阅读全文
posted @ 2019-08-27 09:42 End_donkey 阅读(121) 评论(0) 推荐(0) 编辑
摘要:题意 给定一个长度为N的数列A,以及M条指令 (N≤5 10^5, M using namespace std; const int maxn=500010; struct node{ int l,r; long long data; } t[maxn 4]; long long a[maxn],b 阅读全文
posted @ 2019-08-27 09:38 End_donkey 阅读(345) 评论(0) 推荐(0) 编辑
摘要:给定长度为N的数列A,以及M条指令 (N≤500000, M≤100000),每条指令可能是以下两种之一: “2 x y”,把 A[x] 改成 y。 “1 x y”,查询区间 [x,y] 中的最大连续子段和,即 max(x≤l≤r≤y)⁡ { ri=l A[i] }。 对于每个询 阅读全文
posted @ 2019-08-27 00:53 End_donkey 阅读(180) 评论(0) 推荐(0) 编辑
摘要:树状数组 1 单点修改,区间查询 这个没啥好讲的,修改加查询即可,查询时利用前缀和相减即可。 代码 cpp include using namespace std; const int maxn=1000010; int n,q,u,v,k,a[maxn]; long long c[maxn]; i 阅读全文
posted @ 2019-08-27 00:16 End_donkey 阅读(267) 评论(1) 推荐(0) 编辑
摘要:一道水题,由于x坐标递增y坐标也递增于是前缀和统计即可,用树状数组实现。 cpp include using namespace std; const int maxn=15010; const int maxx=32010; inline long long read(){ long long x 阅读全文
posted @ 2019-08-26 22:29 End_donkey 阅读(133) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示