博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
GSS1 A - Can you answer these queries I
阅读量:5315 次
发布时间:2019-06-14

本文共 1957 字,大约阅读时间需要 6 分钟。

 

//题意:询问一段区间的最大子序列的值。 //做法:维护四个值:包含当前区间左端点的最大子区间LM,包含当前区间右端点的最大子区间RM、当前区间的最大子区间M, 当前区间的区间和S //tree[root].maxn=max(tree[root<<1].maxn,max(tree[root<<1|1].maxn,tree[root<<1].rmaxn+tree[root<<1|1].lmaxn));//    tree[root].lmaxn=max(tree[root<<1].lmaxn,tree[root<<1].sum+tree[root<<1|1].lmaxn);//    tree[root].rmaxn=max(tree[root<<1|1].rmaxn,tree[root<<1|1].sum+tree[root<<1].rmaxn);//    tree[root].sum=tree[root<<1].sum+tree[root<<1|1].sum;#include
#include
#include
#include
#include
using namespace std;const int N=5e4+5;int n,m,l,r;int L,R,M,S;struct Tree{ int l,r,mid; int sum,lmaxn,rmaxn,maxn;}tree[N<<2];int read(){ char c=getchar();int num=0,f=1; for(;!isdigit(c);c=getchar()) if(c=='-') f=-1; for(;isdigit(c);c=getchar()) num=num*10+c-'0'; return num*f;}void pushup(int root){ tree[root].maxn=max(tree[root<<1].maxn,max(tree[root<<1|1].maxn,tree[root<<1].rmaxn+tree[root<<1|1].lmaxn)); tree[root].lmaxn=max(tree[root<<1].lmaxn,tree[root<<1].sum+tree[root<<1|1].lmaxn); tree[root].rmaxn=max(tree[root<<1|1].rmaxn,tree[root<<1|1].sum+tree[root<<1].rmaxn); tree[root].sum=tree[root<<1].sum+tree[root<<1|1].sum;}void build(int root,int l,int r){ tree[root].l=l,tree[root].r=r,tree[root].mid=l+r>>1; if(l==r) { tree[root].sum=tree[root].maxn=tree[root].rmaxn=tree[root].lmaxn=read(); return; } build(root<<1,l,tree[root].mid); build(root<<1|1,tree[root].mid+1,r); pushup(root);}void query(int root,int l,int r,int &L,int &R,int &M,int &S){ if(l<=tree[root].l&&tree[root].r<=r) { L=tree[root].lmaxn, R=tree[root].rmaxn, M=tree[root].maxn, S=tree[root].sum; return; } if(tree[root].mid>=r) { query(root<<1,l,r,L,R,M,S); } else if(tree[root].mid

 

转载于:https://www.cnblogs.com/lovewhy/p/8463559.html

你可能感兴趣的文章
webstrom使用方法
查看>>
Python基础七(函数)
查看>>
Eclipse将引用了第三方jar包的Java项目打包成jar文件
查看>>
UML 用例图
查看>>
软件开发技术
查看>>
线上问题随笔记录数据库连接池问题
查看>>
Window对象
查看>>
简单计算题:填词
查看>>
BZOJ 3231: [Sdoi2008]递归数列 (JZYZOJ 1353) 矩阵快速幂
查看>>
网页固定宽度布局
查看>>
二、通过工厂方法来配置bean
查看>>
特殊的求和(函数和循环)
查看>>
协变和逆变
查看>>
编写高质量代码:改善Java的151个建议四(基本类型)21-30
查看>>
Reptile:requests + Xpath 爬取段子网的段子
查看>>
angry ip scanner
查看>>
【转】R语言 RStudio快捷键
查看>>
Shell字符串
查看>>
jQuery选择器
查看>>
luogu 1484\1792 种树 奇怪的贪心可反悔
查看>>