【线段树】【JSOI 2008】【bzoj 1012】最大数maxnumber
2015-08-29 17:21
816 查看
1012: [JSOI2008]最大数maxnumber
[code]Time Limit: 3 Sec Memory Limit: 162 MB Submit: 5996 Solved: 2589
Description
现在请求你维护一个数列,要求提供以下两种操作: 1、 查询操作。语法:Q L 功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值。限制:L不超过当前数列的长度。 2、 插入操作。语法:A n 功能:将n加上t,其中t是最近一次查询操作的答案(如果还未执行过查询操作,则t=0),并将所得结果对一个固定的常数D取模,将所得答案插入到数列的末尾。限制:n是非负整数并且在长整范围内。注意:初始时数列是空的,没有一个数。
Input
第一行两个整数,M和D,其中M表示操作的个数(M <= 200,000),D如上文中所述,满足(0
Output
对于每一个查询操作,你应该按照顺序依次输出结果,每个结果占一行。
Sample Input
[code]5 100 A 96 Q 1 A 97 Q 1 Q 2
Sample Output
[code]96 93 96
题解:
裸的线段树。不解释。
Code:
[code]#include<iostream> #include<cstdio> #include<cstdlib> #include<cmath> #include<cstring> #include<algorithm> using namespace std; #define N 200010 #define root 1,1,200000 #define lch rt<<1,l,mid #define rch rt<<1|1,mid+1,r int m,p,num,t,tree[N<<2]; int in(){ int x=0; char ch=getchar(); while (ch<'0' || ch>'9') ch=getchar(); while (ch>='0' && ch<='9') x=x*10+ch-'0',ch=getchar(); return x; } void change(int rt,int l,int r,int x,int k){ if (l==r){ tree[rt]=k; return; } int mid=(l+r)>>1; if (x<=mid) change(lch,x,k); else change(rch,x,k); tree[rt]=max(tree[rt<<1],tree[rt<<1|1]); } int query(int rt,int l,int r,int ll,int rr){ if (ll<=l && r<=rr) return tree[rt]; int mid=(l+r)>>1,k=0; if (ll<=mid) k=max(k,query(lch,ll,rr)); if (rr>mid) k=max(k,query(rch,ll,rr)); return k; } int main(){ m=in(),p=in(); num=t=0; while (m--){ char opt=getchar(); while (opt!='A' && opt!='Q') opt=getchar(); int x=in(); if (opt=='A'){ x=(x+t)%p; num++; change(root,num,x); } else { t=query(root,num-x+1,num); printf("%d\n",t); } } return 0; }
相关文章推荐
- 选择使用 Sugar.js 还是 Underscore.js ?
- JavaScript 设计模式之----单体(单例)模式
- JavaScript 设计模式之----单体(单例)模式
- js的replaceAll() (转)
- javascript div动态大小改变
- Javascript高级程序设计——javascript简介
- JSOI2007 麻将 题解
- js实现基于正则表达式的轻量提示插件
- js中数字类型数组排序
- JavaScript的超时调用和间歇调用
- js SyntaxError: unterminated string literal
- js精美的幻灯片画集特效代码分享
- JS代码墙
- JS中Location的使用
- Servlet 与 JSP 核心编程
- JavaScript学习笔记2-附录(JavaScript中的内置对象)
- JavaScript 面向对象继承详解
- Libraries: Performance vs. Native JS
- JavaScript学习笔记2-附录(转自w3cschool)
- placeholder js简单实现