线段树
XSamsara
AFO
展开
-
BZOJ 1012: [JSOI2008]最大数maxnumber【线段树||单调栈】
1012: [JSOI2008]最大数maxnumberTime Limit: 3 Sec Memory Limit: 162 MB Submit: 11990 Solved: 5202【题目描述】 现在请求你维护一个数列,要求提供以下两种操作:1、 查询操作。语法:Q L 功能:查询当前数列中末尾L 个数中的最大的数,并输出这个数的值。限制:L不超过当前数列的长度。2、 插入操原创 2017-12-20 14:51:42 · 293 阅读 · 0 评论 -
BZOJ 3212: Pku3468 A Simple Problem with Integers【树状数组||线段树】
3212: Pku3468 A Simple Problem with IntegersTime Limit: 1 Sec Memory Limit: 128 MBDescription You have N integers, A1, A2, … , AN. You need to deal with two kinds of operations. One type of o...原创 2018-04-19 08:49:44 · 181 阅读 · 0 评论 -
BZOJ 2243: [SDOI2011]染色【树剖+线段树】
【题目描述】 传送门【题解】 其实就是树剖+线段树,线段树如何判断连续段数量,也就是在Lson和Rson合并时加一句判断,Lson有段和Rson左端是否相同,相同-1,否则不变。 然后LCA时也要记一下,判小心一点,就可以了。代码如下#include<cstdio>#include<algorithm>#define MAXN 1000...原创 2018-06-19 20:17:42 · 168 阅读 · 0 评论 -
Codeforces 446C. DZY Loves Fibonacci Numbers【斐波那契+线段树】
C. DZY Loves Fibonacci Numbers【题目描述】传送门【题解】我们可以知道斐波那契数列有两个性质:∑i=1nFi=Fn+2−F2\sum_{i=1}^{n} F_i=F_{n+2}-F_{2}∑i=1nFi=Fn+2−F2Fn=aF1+bF2F_n=aF_1+bF_2Fn=aF1+bF2所以可以预先用矩阵乘法求出这个a和b,然后套线段树就可以了。...原创 2019-02-26 21:16:18 · 120 阅读 · 0 评论 -
BZOJ2725: [Violet 6]故乡的梦【线段树+最短路】
2725: [Violet 6]故乡的梦【题目描述】传送门【题解】我们会发现,如果我们要走x-y这条边,一定会走一段最短路到x1(这里的最短路表示(S,T)的最短路),然后走一段非最短路到x,从y走一段非最短路到最短路上的点y1,然后走一段最短路到T。所以这条边影响的最短路为x1到y1这一段,所以我们之间线段树维护这个区间最小值。【代码如下】#include<cstdio>...原创 2019-03-06 18:01:37 · 258 阅读 · 0 评论 -
BZOJ4527: K-D-Sequence【线段树+单调栈】
4527: K-D-SequenceDescription我们称一个数列为一个好的k-d数列,当且仅当我们在其中加上最多k个数之后,数列排序后为一个公差为d的等差数列。你手上有一个由n个整数组成的数列a。你的任务是找到它的最长连续子串,使得满足子串为好的k-d数列。Input第一行包含三个用空格隔开的整数n,k,d(1≤n≤2∗105;0≤k≤2∗105;0≤d≤109)n,k,d(1 ...原创 2019-03-13 20:16:30 · 179 阅读 · 0 评论 -
BZOJ3155: Preprefix sum【线段树】
3155: Preprefix sumemmm,没什么好说的,线段树区间加。#include<cstdio>using namespace std;const int MAXN=100005;int n,m,a[MAXN];long long Tre[MAXN<<2],Add[MAXN<<2];#include<cctype>int r...原创 2019-04-21 19:00:16 · 128 阅读 · 0 评论 -
BZOJ4817: [Sdoi2017]树点涂色【LCT+线段树+LCA】
4817: [Sdoi2017]树点涂色我们发现1操作就是LCT的Access操作,对于每个1操作,在Access的同时构造Val数组,我们会发现当前实儿子所在的子树Val++,Access后的实儿子Val–。所以可以用DFS序+线段树进行维护。2操作就是Val[x]+Val[y]-2*Val[fa]+13操作直接维护区间最大值就可以了。#include<cmath>#inc...原创 2019-04-17 20:24:00 · 209 阅读 · 0 评论 -
BZOJ4372: 烁烁的游戏【动态点分治+线段树】
4372: 烁烁的游戏动态点分治,其实就是将点分树建出来,然后在树上做一些动态操作(不改变树的形态)。对于每一个点,我们用线段树存下这个点的子树中所有原树上距离的权值。然后对于修改直接暴力跳父亲,容斥去重就可以了。询问也同样道理。复杂度O(nlog2n)O(nlog^2n)O(nlog2n)#include<cmath>#include<cstdio>#incl...原创 2019-08-26 19:27:45 · 167 阅读 · 0 评论