问题描述

LG1198

BZOJ1012


题解

我们把所有操作离线,设一共有\(n\)个插入操作。

于是提前建立\(n\)个数,全部设为\(-INF\)

接着逐个处理操作即可。


\(\mathrm{Code}\)

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define int long long
  4. template <typename Tp>
  5. void read(Tp &x){
  6. x=0;char ch=1;int fh;
  7. while(ch!='-'&&(ch<'0'||ch>'9')) ch=getchar();
  8. if(ch=='-'){
  9. fh=-1;ch=getchar();
  10. }
  11. else fh=1;
  12. while(ch>='0'&&ch<='9'){
  13. x=(x<<1)+(x<<3)+ch-'0';
  14. ch=getchar();
  15. }
  16. x*=fh;
  17. }
  18. const int maxn=1000000+7;
  19. const int INF=0x3f3f3f3f3f3f3f3fLL;
  20. int T,mod,n;
  21. int cz[maxn],ext[maxn];
  22. int nowt[maxn];
  23. void fr(int &x){
  24. char ch=1;
  25. while(ch!='Q'&&ch!='A') ch=getchar();
  26. x=(ch=='A')+1;
  27. }
  28. int mx[maxn<<2];
  29. #define lfc (x<<1)
  30. #define rgc ((x<<1)|1)
  31. #define mid ((l+r)>>1)
  32. void pushup(int x){
  33. mx[x]=max(mx[lfc],mx[rgc]);
  34. }
  35. void build(int x,int l,int r){
  36. if(l==r){
  37. mx[x]=-INF;return;
  38. }
  39. build(lfc,l,mid);build(rgc,mid+1,r);
  40. pushup(x);
  41. }
  42. int L,R,need;
  43. void change(int x,int l,int r){
  44. if(l==r){
  45. mx[x]=need;return;
  46. }
  47. if(L<=mid) change(lfc,l,mid);
  48. else change(rgc,mid+1,r);
  49. pushup(x);
  50. }
  51. int query(int x,int l,int r){
  52. if(r<L||l>R) return -INF;
  53. if(L<=l&&r<=R) return mx[x];
  54. return max(query(lfc,l,mid),query(rgc,mid+1,r));
  55. }
  56. int las;
  57. signed main(){
  58. read(T);read(mod);
  59. for(int i=1;i<=T;i++){
  60. fr(cz[i]);read(ext[i]);
  61. if(cz[i]==2) ++n;
  62. nowt[i]=n;
  63. }
  64. build(1,1,n);
  65. for(int i=1;i<=T;i++){
  66. if(cz[i]==1){
  67. L=nowt[i]-ext[i]+1,R=nowt[i];
  68. las=query(1,1,n);
  69. printf("%lld\n",las);
  70. }
  71. else{
  72. L=nowt[i],need=(ext[i]+las)%mod;
  73. change(1,1,n);
  74. }
  75. }
  76. return 0;
  77. }

LG1198/BZOJ1012 「JSOI2008」最大数 线段树+离线的更多相关文章

  1. loj#2255. 「SNOI2017」炸弹 线段树优化建图,拓扑,缩点

    loj#2255. 「SNOI2017」炸弹 线段树优化建图,拓扑,缩点 链接 loj 思路 用交错关系建出图来,发现可以直接缩点,拓扑统计. 完了吗,不,瓶颈在于边数太多了,线段树优化建图. 细节 ...

  2. LOJ 2312(洛谷 3733) 「HAOI2017」八纵八横——线段树分治+线性基+bitset

    题目:https://loj.ac/problem/2312 https://www.luogu.org/problemnew/show/P3733 原本以为要线段树分治+LCT,查了查发现环上的值直 ...

  3. bzoj5518 & loj3046 「ZJOI2019」语言 线段树合并+树链的并

    题目传送门 https://loj.ac/problem/3046 题解 首先问题就是问有多少条路径是给定的几条路径中的一条的一个子段. 先考虑链的做法. 枚举右端点 \(i\),那么求出 \(j\) ...

  4. LOJ #2005. 「SDOI2017」相关分析 线段树维护回归直线方程

    题目描述 \(Frank\) 对天文学非常感兴趣,他经常用望远镜看星星,同时记录下它们的信息,比如亮度.颜色等等,进而估算出星星的距离,半径等等. \(Frank\) 不仅喜欢观测,还喜欢分析观测到的 ...

  5. 线段树+离线 hdu5654 xiaoxin and his watermelon candy

    传送门:点击打开链接 题意:一个三元组假设满足j=i+1,k=j+1,ai<=aj<=ak,那么就好的.如今告诉你序列.然后Q次询问.每次询问一个区间[l,r],问区间里有多少个三元组满足 ...

  6. 牛客练习赛53 E-老瞎眼pk小鲜肉(思维+线段树+离线)

    前言 听说是线段树离线查询?? 做题做着做着慢慢对离线操作有点感觉了,不过也还没参透,等再做些题目再来讨论离线.在线操作. 这题赛后看代码发现有人用的树状数组,$tql$.当然能用树状数组写的线段树也 ...

  7. [JSOI2008]最大数 (线段树)

    题目描述 现在请求你维护一个数列,要求提供以下两种操作: 1. 查询操作. 语法:Q L 功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值. 限制:L不超过当前数列的长度.(L>=0 ...

  8. LOJ #2537. 「PKUWC 2018」Minimax (线段树合并 优化dp)

    题意 小 \(C\) 有一棵 \(n\) 个结点的有根树,根是 \(1\) 号结点,且每个结点最多有两个子结点. 定义结点 \(x\) 的权值为: 1.若 \(x\) 没有子结点,那么它的权值会在输入 ...

  9. 【loj6029】「雅礼集训 2017 Day1」市场 线段树+均摊分析

    题目描述 给出一个长度为 $n$ 的序列,支持 $m$ 次操作,操作有四种:区间加.区间下取整除.区间求最小值.区间求和. $n\le 100000$ ,每次加的数在 $[-10^4,10^4]$ 之 ...

随机推荐

  1. 小白专场-是否同一颗二叉搜索树-c语言实现

    目录 一.题意理解 二.求解思路 三.搜索树表示 程序框架搭建 3.1 如何建搜索树 3.2 如何判别 3.3 清空树 更新.更全的<数据结构与算法>的更新网站,更有python.go.人 ...

  2. Vue中MVVM模式的双向绑定原理 和 代码的实现

      今天带大家简单的实现MVVM模式,Object.defineProperty代理(proxy)数据   MVVM的实现方式: 模板编译(Compile) 数据劫持(Observer) Object ...

  3. 【新特性速递】树表格结构由单层 TR 改为 TR-TD-TABLE 层级嵌套!

    由于历史原因,在之前实现树表格时,我们有点偷懒,本来应该是层级嵌套的树结构,被我们硬生生的拉平了,请看: 可以看到,basic目录的子节点和basic是在同一级别的,因为此目录尚未展开,所以这些子节点 ...

  4. awk、sed、grep更适合的方向

    awk.sed.grep更适合的方向: grep 更适合单纯的查找或匹配文本 sed 更适合编辑匹配到的文本 awk 更适合格式化文本,对文本进行较复杂格式处理 关于awk内建变量个人见解,简单易懂 ...

  5. VS2019 远程调试

    碰到一个问题,在本机调试没有任何问题,部署到测试环境的CentOS 7 上,抛出异常.为解决这个问题,使用远程调试. 第一步,设置远程链接 第二步,Debug--Attach  to Process ...

  6. Vue全选和全不选

    HTML代码: <script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script> ...

  7. ‘Maximum call stack size exceeded’错误的解决方法

    今天打开vue项目,页面空白报了一个错误,错误如下: “Maximum call stack size exceeded” 错误的字面意思是:超出最大调用堆栈大小. 然后就是各种百度,找错误原因.百度 ...

  8. Nginx Cache-Control

    转自:https://www.cnblogs.com/sfnz/p/5383647.html HTTP协议的Cache-Control指定请求和响应遵循的缓存机制.在请求消息或响应消息中设置 Cach ...

  9. date——系统时间的命令

    这是一个可以用各种姿势获得各种时间的命令.最近在写自动化定时脚本时学了一下. 参考:https://www.cnblogs.com/ginvip/p/6357378.html 比如: 利用cronta ...

  10. HTML教程详解

    HTML学习笔记 目录 一.html简介 1.html是什么? 2.html能做什么(html的作用)? 3.html书写规范 二.html基本标签 1.标签的语法 2.标签的分类 3.常用标签: 1 ...