题面

维护一个数列,提供以下两种操作:
1、 查询操作:查询当前数列中末尾L个数中的最大的数,并输出这个数的值。
2、 插入操作:将n加上t,其中t是最近一次查询操作的答案(如果还未执行过查询操作,则t=0),并将所得结果对一个固定的常数D取模,将所得答案插入到数列的末尾。

题解

1、思路:维护一颗叶节点数为m的线段树(就算m次操作都是插入也只有m个元素),区间查询即可。复杂度O(m∗log2mm∗log2mm*log_2m)。
2、数据有毒。。。bzojAC的code洛谷MLE,洛谷AC的bzojTLE。

BZOJAC[洛谷MLE,不知道为什么]

//#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn = 200005;int sgt[maxn<<2];
void change(int p, int l, int r, int x, int v){if(l == r){sgt[p] = v;return ;}int m = (l+r)/2;if(x <= m)change(p*2,l,m,x,v);if(x > m)change(p*2+1,m+1,r,x,v);sgt[p] = max(sgt[p*2],sgt[p*2+1]);
}
int query(int p, int l, int r, int L, int R){if(L <= l && r <= R)return sgt[p];int m = (l+r)/2, ans = 0;if(L <= m)ans = max(ans, query(p*2,l,m,L,R));if(R > m)ans = max(ans, query(p*2+1,m+1,r,L,R));return ans;
}int main(){//ios::sync_with_stdio(false);int n=0, m, mod, t=0;scanf("%d %d",&m, &mod);//cin>>m>>mod;for(int i = 1; i <= m; i++){char op[2];  int x;  //cin>>op>>x;scanf("%s%d", op, &x);if(op[0] == 'Q'){printf("%d\n", t=query(1,1,m,n-x+1,n));//cout<<(t = query(1,1,m,n-x+1,n))<<"\n";}else{change(1,1,m,++n,(x+t)%mod);}}return 0;
}

luoguAC[bzojTLE,好像是scanf的锅]

#include<iostream>
#include<algorithm>
using namespace std;
const int maxn = 200010;
typedef long long LL;struct node{int l, r;LL val, addmark;
}sgt[maxn<<2];
void build(int p, int l, int r){sgt[p].l = l, sgt[p].r = r;if(l == r){//sgt[p].val = a[l];}else{int m = (l+r)/2;build(p*2,l,m);build(p*2+1,m+1,r);sgt[p].val = max(sgt[p*2].val,sgt[p*2+1].val);}
}
void change(int p, int x, int v){if(sgt[p].l == sgt[p].r){sgt[p].val = v;return ;}int m = (sgt[p].l+sgt[p].r)/2;if(x <= m)change(p*2,x,v);if(x > m)change(p*2+1,x,v);sgt[p].val = max(sgt[p*2].val,sgt[p*2+1].val);
}
LL query(int p, int l, int r){if(l <= sgt[p].l && sgt[p].r <= r)return sgt[p].val;LL m = (sgt[p].l+sgt[p].r)/2, ans = 0;if(l <= m)ans = max(ans, query(p*2,l,r));if(r > m)ans = max(ans, query(p*2+1,l,r));return ans;
}int main(){ios::sync_with_stdio(false);LL n=0, m, mod, t=0;cin>>m>>mod;build(1,1,m);for(int i = 1; i <= m; i++){char op;  LL x;  cin>>op>>x;if(op == 'Q'){cout<<(t = query(1,n-x+1,n))<<"\n";}else{change(1,++n,(x+t)%mod);}}return 0;
}

【JSOI2008】【bzoj1012】最大数maxnumber相关推荐

  1. BZOJ-1012[JSOI2008]最大数maxnumber 线段树区间最值

    这道题相对简单下面是题目: 1012: [JSOI2008]最大数maxnumber Time Limit: 3 Sec Memory Limit: 162 MB Submit: 6542 Solve ...

  2. 1012: [JSOI2008]最大数maxnumber

    1012: [JSOI2008]最大数maxnumber Time Limit: 3 Sec  Memory Limit: 162 MB Submit: 10711  Solved: 4683 [Su ...

  3. BZOJ 1012: [JSOI2008]最大数maxnumber 单调队列/线段树/树状数组/乱搞

    1012: [JSOI2008]最大数maxnumber Time Limit: 3 Sec  Memory Limit: 162 MB Submit: 4750  Solved: 2145 [Sub ...

  4. BZOJ 1012: [JSOI2008]最大数maxnumber

    1012: [JSOI2008]最大数maxnumber Time Limit: 3 Sec  Memory Limit: 162 MB Submit: 11358  Solved: 4978 [Su ...

  5. BZOJ 1012: [JSOI2008]最大数maxnumber(线段树)

    裸的线段树...因为数组开小了而一直RE..浪费了好多时间.. -------------------------------------------------------------------- ...

  6. BZOJ 1012 [JSOI2008]最大数maxnumber

    1012: [JSOI2008]最大数maxnumber Time Limit: 3 Sec  Memory Limit: 162 MB Submit: 5425  Solved: 2397 [Sub ...

  7. 【BZOJ 1012】[JSOI2008]最大数maxnumber

    1012: [JSOI2008]最大数maxnumber Time Limit: 3 Sec Memory Limit: 162 MB Description 现在请求你维护一个数列,要求提供以下两种 ...

  8. [BZOJ 1012] [JSOI 2008] 最大数maxnumber

    1012: [JSOI2008]最大数maxnumber Time Limit: 3 Sec  Memory Limit: 162 MB Submit: 5094  Solved: 2276 [Sub ...

  9. bzoj1012: [JSOI2008]最大数maxnumber [单调队列]

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

  10. 【听说是线段树】bzoj1012 [JSOI2008]最大数maxnumber

    一眼看题目吓了一跳:这TM不就是单调队列吗,200000又怎样,大不了我二分嘛 系统提示:成功开启 手残模式 开始瞎写: 1 #include <cstdio> 2 long long a ...

最新文章

  1. 一个菜鸟程序猿--再谈六月坚持英语学习
  2. 最常被程序员们谎称读过的计算机书籍
  3. wordpress 根据文章ID获取分类ID和标签ID
  4. J2EE应用与移动互联网-写在前头
  5. 学 shell (1/5)
  6. hive 时间函数 总结
  7. 数据库课程设计 ——酒店管理系统
  8. 合并时显示是无效的m3u8文件_如何合并m3u8及ts文件
  9. AxureRP 8.0安装教程
  10. Ubuntu18.04 ibus 中文输入法崩溃解决实录
  11. arctanx麦克劳林公式推导过程_高中数学三角函数公式大全,竞赛高考都适用(含公式推导)...
  12. 面试题:赛马最快N匹
  13. esp32查询剩余内存_ESP32 Arduino教程:获取自由堆-esp文件
  14. QGraphicsView使用详解
  15. HP-UX之MP管理
  16. 前三十年看父敬子,后三十年看子敬父
  17. 从苹果2015年春季发布会看移动互联网的发展
  18. MS计算轨迹的分子间作用能
  19. 20200220 MFC之列表控件技术总结 CListCtrl (一)
  20. java--servlet中三大作用域对象

热门文章

  1. 人,作为社会的基础单元
  2. 因子(factor)的研究
  3. Python Tricks(一)—— np.where 与最大最小截断
  4. 从“递归结构”到解汉诺塔问题的求解
  5. nginx post请求超时_nginx的重试机制以及nginx常用的超时配置说明
  6. python有道-如何用pythonquot;优雅的”调用有道翻译?
  7. python入门经典-入门python有什么好的书籍推荐?
  8. python自学行吗-自学python有用吗?
  9. python是什么课程-Python是什么?如何学习Python课程?老男孩IT教育
  10. Linux下科大讯飞语音识别全面总结