[JSOI2008]最大数maxnumber(线段树)
Description
现在请求你维护一个数列,要求提供以下两种操作:1、 查询操作。语法:Q L 功能:查询当前数列中末尾L
个数中的最大的数,并输出这个数的值。限制:L不超过当前数列的长度。2、 插入操作。语法:A n 功能:将n加
上t,其中t是最近一次查询操作的答案(如果还未执行过查询操作,则t=0),并将所得结果对一个固定的常数D取
模,将所得答案插入到数列的末尾。限制:n是非负整数并且在长整范围内。注意:初始时数列是空的,没有一个
数。
Input
第一行两个整数,M和D,其中M表示操作的个数(M <= 200,000),D如上文中所述,满足D在longint内。接下来
M行,查询操作或者插入操作。
Output
对于每一个询问操作,输出一行。该行只有一个数,即序列中最后L个数的最大数。
Sample Input
A 96
Q 1
A 97
Q 1
Q 2
Sample Output
93
96
#include<cstdio> #include<algorithm> using namespace std; template<class T>inline void read(T &x) {x=0;int f=0;char ch=getchar();while(ch<'0'||ch>'9')f|=(ch=='-'),ch=getchar();while(ch<='9'&&ch>='0')x=(x<<1)+(x<<3)+(ch^48),ch=getchar();x=f?-x:x;return; } int tr[1000000],n,D,tot,t; void add(int i,int l,int r,int x,int y) {if(l==r){tr[i]+=y;tr[i]%=D;return;}int mid=l+r>>1;if(x<=mid)add(i<<1,l,mid,x,y);else add(i<<1|1,mid+1,r,x,y);tr[i]=max(tr[i<<1],tr[i<<1|1]); } int query(int i,int l,int r,int x,int y) {if(x<=l&&r<=y)return tr[i];int mid=l+r>>1;if(y<=mid)return query(i<<1,l,mid,x,y);else if(x>mid)return query(i<<1|1,mid+1,r,x,y);else return max(query(i<<1,l,mid,x,mid),query(i<<1|1,mid+1,r,mid+1,y)); } int main() {int x;char s;read(n);read(D);for(int i=1;i<=n;i++){scanf("%c",&s);read(x);if(s=='A'){x=(x+t)%D;add(1,1,200000,++tot,x);}else{x=tot-x+1;x=query(1,1,200000,x,tot);t=x;printf("%d\n",x);}}return 0; }
转载于:https://www.cnblogs.com/jiangtao0508/p/7738416.html
[JSOI2008]最大数maxnumber(线段树)相关推荐
- BZOJ-1012[JSOI2008]最大数maxnumber 线段树区间最值
这道题相对简单下面是题目: 1012: [JSOI2008]最大数maxnumber Time Limit: 3 Sec Memory Limit: 162 MB Submit: 6542 Solve ...
- BZOJ 1012: [JSOI2008]最大数maxnumber(线段树)
裸的线段树...因为数组开小了而一直RE..浪费了好多时间.. -------------------------------------------------------------------- ...
- 1012: [JSOI2008]最大数maxnumber 线段树
https://www.lydsy.com/JudgeOnline/problem.php?id=1012 现在请求你维护一个数列,要求提供以下两种操作:1. 查询操作.语法:Q L 功能:查询当前数 ...
- BZOJ1012|JSOI最大数maxnumber|线段树
Description 现在请求你维护一个数列,要求提供以下两种操作: 1. 查询操作.语法:Q L 功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值.限制:L不超过当前数列的长度. 2. ...
- BZOJ 1012: [JSOI2008]最大数maxnumber 单调队列/线段树/树状数组/乱搞
1012: [JSOI2008]最大数maxnumber Time Limit: 3 Sec Memory Limit: 162 MB Submit: 4750 Solved: 2145 [Sub ...
- BZOJ 1012 [JSOI2008]最大数maxnumber
1012: [JSOI2008]最大数maxnumber Time Limit: 3 Sec Memory Limit: 162 MB Submit: 5425 Solved: 2397 [Sub ...
- 【BZOJ 1012】[JSOI2008]最大数maxnumber
1012: [JSOI2008]最大数maxnumber Time Limit: 3 Sec Memory Limit: 162 MB Description 现在请求你维护一个数列,要求提供以下两种 ...
- 1012: [JSOI2008]最大数maxnumber
1012: [JSOI2008]最大数maxnumber Time Limit: 3 Sec Memory Limit: 162 MB Submit: 10711 Solved: 4683 [Su ...
- BZOJ 1012: [JSOI2008]最大数maxnumber
1012: [JSOI2008]最大数maxnumber Time Limit: 3 Sec Memory Limit: 162 MB Submit: 11358 Solved: 4978 [Su ...
- 【听说是线段树】bzoj1012 [JSOI2008]最大数maxnumber
一眼看题目吓了一跳:这TM不就是单调队列吗,200000又怎样,大不了我二分嘛 系统提示:成功开启 手残模式 开始瞎写: 1 #include <cstdio> 2 long long a ...
最新文章
- EF架构~在global.asax里写了一个异常跳转,不错!
- 【多线程】ThreadPoolExecutor 类的使用详解
- php 回复id同过session 任意获取id不通过a,PHP会话ID相同但变量丢失
- cocos2d-x初探学习笔记(16)--LayerColor
- EntiyFramework :Update model from database引起的两个问题
- php 开启,PHP服务的开启详细步骤
- python可以在多种平台运行、这体现了python语言的,Python可以在多种平台运行,这体现了Python语言的可移植特性...
- Python 利用字典实现类似 java switch case 功能
- rails 表单嵌套
- shell脚本 空格
- 44. Wildcard Matching (String; DP, Back-Track)
- flask:小项目(医生与病人)
- Android机顶盒adb调试及一直显示offline的处理
- 链路追踪译文学习记录(Dapper!!!非原创!!!学习记录)
- Android 时间格式化
- jy-12-SPRINGMYBATIS02——云笔记02-刘苍松
- 编程修养 - 来自网络整理
- Linux 系统安全检查
- 如何解决打开浏览器跳转MSN中国页面
- 炼丹心得|追求极致的比赛冠军什么样?
热门文章
- MySQL之Got fatal error 1236 from master when reading data from binary log
- python contains类似函数_介绍几款Python性能优化工具
- linux终端下载vscode,Ubuntu:安装vscode
- POJ 3461题解(kmp算法)文本串和子串匹配
- 计算机房采用c02采灭火,[灭火器使用.doc
- C/C++[codeup 1944]八进制
- 数据集:mnist手写数据集
- DeepLab图像分割
- 423.从英文中重建数字
- 304.二维区域和检索-矩阵不可变