https://www.luogu.org/problemnew/show/P1198

要问区间最大值,肯定是要用线段树的,不能用树状数组。(因为没有逆元?但是题目求的是最后一段,可以改成类似前缀和啊。不行!插入新元素之后更新的复杂度太高了!)

所以我们就弄一个初始元素是负数的最大值线段树,每次插入就是把末尾的元素 $update$ ,查询就是查询末尾的区间最大值,这样每次修改/查询的复杂度是 $O(nlogn)$ 的,非常给力。

所以说我又要到哪里抄一个线段树模板。

注意这个线段树是从1开始计数的。

#include<bits/stdc++.h>
using namespace std;
#define ll long longconst int MAXM=200000;
int a[MAXM+5],st[(MAXM<<2)+5];void build(int o,int l,int r){if(l==r) st[o]=a[l];else{int m=l+((r-l)>>1);build(o<<1,l,m);build(o<<1|1,m+1,r);st[o]=max(st[o<<1],st[o<<1|1]);}
}void update(int o,int l,int r,int id,int v){if(l==r) st[o]=v;else{int m=l+((r-l)>>1);if(id<=m) update(o<<1,l,m,id,v);else update(o<<1|1,m+1,r,id,v);st[o]=max(st[o<<1],st[o<<1|1]);}
}int query(int o,int l,int r,int a,int b){if(r<a||l>b) return -1;if(a<=l&&r<=b) return st[o];int m=l+((r-l)>>1);int p1=query(o<<1,l,m,a,b),p2=query(o<<1|1,m+1,r,a,b);return max(p1,p2);
}int M;
ll D;
int t;char s[5];
int ins;int cntA=0;int main(){t=0;scanf("%d%lld",&M,&D);for(int i=1;i<=M;i++){a[i]=-1;}build(1,1,M);for(int i=1;i<=M;i++){scanf("%s%d",s,&ins);if(s[0]=='Q'){t=query(1,1,M,cntA-ins+1,cntA);printf("%d\n",t);}else{update(1,1,M,cntA+1,((1ll*ins)+t)%D);cntA++;}}
}

转载于:https://www.cnblogs.com/Yinku/p/10318840.html

洛谷 - P1198 - 最大数 - 线段树相关推荐

  1. 洛谷 p3372 模板-线段树 1

    题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某区间每一个数加上x 2.求出某区间每一个数的和 输入输出格式 输入格式: 第一行包含两个整数N.M,分别表示该数列数字的个数和操作的总个 ...

  2. 洛谷 [P1198] 最大数

    首先这是一道线段树裸题,但是线段树长度不确定,那么我们可以在建树的时候,将每一个节点初始化为-INF,每次往队尾加一个元素即一次单节点更新,注意本题的数据范围,其实并不用开 long long,具体请 ...

  3. 【洛谷 3372】线段树 1

    题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某区间每一个数加上x 2.求出某区间每一个数的和 输入格式 第一行包含两个整数N.M,分别表示该数列数字的个数和操作的总个数. 第二行包含 ...

  4. 洛谷P3352 [ZJOI2016]线段树

    P3352 [ZJOI2016]线段树 (^ w ^) 题目描述 小Yuuka遇到了一个题目:有一个序列a_1,a_2,?,a_n,q次操作,每次把一个区间内的数改成区间内的最大值,问最后每个数是多少 ...

  5. 【洛谷】【线段树】P3353 在你窗外闪耀的星星

    [题目描述:] /* 飞逝的的时光不会模糊我对你的记忆.难以相信从我第一次见到你以来已经过去了3年.我仍然还生动地记得,3年前,在美丽的集美中学,从我看到你微笑着走出教室,你将头向后仰,柔和的晚霞照耀 ...

  6. Luogu P1198 BZOJ 1012 最大数 (线段树)

    Luogu P1198 BZOJ 1012 最大数 (线段树) 手动博客搬家: 本文发表于20170821 14:32:05, 原地址https://blog.csdn.net/suncongbo/a ...

  7. 洛谷P1198 [JSOI2008]最大数

    P1198 [JSOI2008]最大数 267通过 1.2K提交 题目提供者该用户不存在 标签线段树各省省选 难度提高+/省选- 提交该题 讨论 题解 记录 最新讨论 WA80的戳这QwQ BZOJ都 ...

  8. Luogu P1198 [JSOI2008]最大数 线段树

    P1198 [JSOI2008]最大数 题目描述 现在请求你维护一个数列,要求提供以下两种操作: 1. 查询操作. 语法:Q L 功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值. 限制: ...

  9. 洛谷P4114 Qtree1(树链剖分+线段树)

    传送门 LCT秒天秒地用什么树剖 这题可以算是树剖的比较裸的题目了 把每一条边的权值下放到他两边的点中深度较深的那个 然后直接用树剖+线段树带进去乱搞就可以了 1 //minamoto 2 #incl ...

最新文章

  1. 【Zookeeper】源码分析之服务器(一)
  2. 进BAT一线大厂,前端工程师如何做准备?
  3. (五)为边缘AI人脸识别创建人脸数据库
  4. 杭电 1060 Leftmost Digit
  5. 第八节:SpringBoot指定配置文件配置三
  6. 20169217 2016-2017-2 《网络攻防实践》第四周学习总结
  7. 雨后小故事动态邪恶_当您遇到“邪恶”的问题时,使故事变小
  8. U8存货核算月末结账的月份跟日期对不上,导致无法结账
  9. Font Replacer
  10. 上岸快手,我选择一条不一样的路
  11. SpringBoot之整合Redis分析和实现-基于Spring Boot2.0.2版本
  12. cocos编写农场偷菜小游戏的总结
  13. 读取excel,int 数字时间转时间
  14. linux hba查看,各操作系统查看HBA和WWN的方法
  15. 欧姆龙NJ/NXPLC 全ST程序案例
  16. C语言实战:C语言打印九九乘法表
  17. 孙子兵法谋攻篇----知胜有五
  18. Automatic Noise Modeling for Ghost-free HDR Reconstruction 阅读笔记
  19. html函数参数数组遍历,JavaScript foreach遍历数组
  20. image not recognized

热门文章

  1. HTML5 Canvas 旋转
  2. 各版本windows操作系统获取地址,sqlserver全版本数据库工具下载网站分享
  3. PS 技术篇-使用ps快速完成证件照片换背景色实例演示10s搞定!
  4. Word 技术篇-段落的前后间距单位磅改为行,行改为磅
  5. freeRtos学习笔记 (5)事件组
  6. 【双系统下给ubuntu18.04扩容】
  7. [YTU]_2441( C++习题 复数类--重载运算符2+)
  8. c++派生类和基类的构造函数和析构函数
  9. 聚类之isodata算法
  10. matlab apfc,APFC-Boost 带APFC的Boost升压变换器在Matlab中的仿真实现 - 下载 - 搜珍网...