SPOJ GSS 系列】的更多相关文章

来怒做GSS系列了: GSS1:https://www.luogu.org/problemnew/show/SP1043 这题就是维护一个 sum , mx , lmx , rmx,转移时用结构体就好了. 代码如下: #include<iostream> #include<cstdio> #include<cstring> using namespace std; typedef long long ll; ; int n,m,a[maxn]; struct N{ in…
文章目录 GSS1 GSS2 GSS3 GSS4 GSS5 GSS6 GSS7 GSS8 传送门 这个GSSGSSGSS系列全部是跟子段有关的数据结构菜题. 于是来水一篇博客. GSS1 传送门 题意简述:求不带修的最大子段和. 思路:直接线段树走一发. 代码: #include<bits/stdc++.h> #define ri register int using namespace std; const int N=5e4+5; int n,a[N]; inline int max(co…
众所周知的仅次于ynoi的毒瘤数据结构系列.(跟Qtree系列并列?) GSS1: 长度为 $n$ 的序列 $a$,$m$ 个询问,每次询问区间 $[l,r]$ 之间的最大子段和. $1\le n,m\le 5\times 10^4$. 经典的线段树题. 每个节点维护四个值:$sum,lmax,rmax,amax$. $sum$ 表示整个区间的和. $lmax$ 表示以 $l$ 为左端点的最大子段和. $rmax$ 表示以 $r$ 为右端点的最大子段和. $amax$ 表示整个的最大子段和. 时…
题目链接 GSS $GSS1$ 对于每个询问$l$, $r$,查询$a_{l}$, $a_{l+1}$, $a_{l+2}$, ..., $a_{r}$这个序列的最大字段和. 建立线段树,每个节点维护四个信息 $c$:当前区间的元素和 $lc$:当前区间左端点开始的最大子序列和 $rc$:当前区间右端点结束的最大子序列和 $ret$:当前区间的答案 于是我们建立线段树的时候预处理出每个节点的四个信息,查询的时候返回一个节点,这个节点的$ret$即为答案. #include <bits/stdc+…
SPOJ GSS1 题意:给一个序列以及一些询问,每个是问\([l,r]\)中最大连续子序列和是多少. 思路:这个问题是以下问题的基础. 我们考虑用线段树来解决这个问题. 首先我们来想想如果要求出最大连续子序列和需要什么信息. 对于\([l,m)\)和\([m,r)\)这两个区间,我们需要将它们合并成\([l,r)\)这个区间. 那么我们考虑分治地来解决这个问题.把问题分成三部分: \([l,m)\)中的最大子序列和 \([m,r)\)中的最大子序列和 左端点在\([l,m)\)内,右端点在\(…
GSS1 线段树最大子段和裸题,不带修改,注意pushup. 然而并不会猫树之类的东西 #include<bits/stdc++.h> #define MAXN 50001 using namespace std; struct node{ int l , r , sum , lMax , rMax , midMax; }Tree[MAXN << ]; int a[MAXN] , rMax , allMax , N; inline int max(int a , int b){ r…
题目一 : SPOJ 375 Query On a Tree http://www.spoj.com/problems/QTREE/ 给一个树,求a,b路径上最大边权,或者修改a,b边权为t. #include <cstdio> #include <iostream> #include <cstring> #include <cstdlib> #include <algorithm> using namespace std; + ; ; ]; s…
GSS1 题目大意:给出一个数列,多次询问区间最长连续子段和 题解:线段树维护区间最长连续子段和gss,区间从最左元素开始的最长连续子段和lgss 区间以最右元素为结尾的最长连续子段和rgss以及区间和s,信息传递并合并即可 #include <cstdio> #include <algorithm> using namespace std; const int N=100010,M=N<<2; struct data{int s,lgss,rgss,gss;}T[M]…
GSS GSS1 随便猫树或者线段树,就可以过了 猫树不说,线段树可以维护左边最大,右边最大,区间最大,区间值然后就做出来了. //Isaunoya #pragma GCC optimize(2) #pragma GCC optimize(3) #pragma GCC optimize("Ofast") #include<bits/stdc++.h> using namespace std ; inline int read() { register int x = 0 ;…
#include <cstdio> ; ; inline int max(int, int); inline int getint(); inline void putint(int); struct node { int lmax, rmax, smax, ssum; inline node(); }; inline node merge(node, node); struct seg { node data; seg * l, * r; inline void maintain(); };…