最大值[JSOI2008] 洛谷1198 线段树
来源:互联网 发布:怎样开淘宝网店代销 编辑:程序博客网 时间:2024/06/03 21:20
题目描述
现在请求你维护一个数列,要求提供以下两种操作:
1、 查询操作。
语法:Q L
功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值。
限制:L不超过当前数列的长度。
2、 插入操作。
语法:A n
功能:将n加上t,其中t是最近一次查询操作的答案(如果还未执行过查询操作,则t=0),并将所得结果对一个固定的常数D取模,将所得答案插入到数列的末尾。
限制:n是整数(可能为负数)并且在长整范围内。
注意:初始时数列是空的,没有一个数。
分析
就是一个水的线段树。
一个小小的线段树就可以AC了。
但是,刷的意义在于,c++现在也有线段树的模板啦
ps:记得要换行。
code
#include<iostream>#include<cstring>#include<cstdio>#include<cmath>#include<string>#include<algorithm>using namespace std;struct arr{ int x,y; int mx;}f[3000000];int n,m;int insert(int r,int x,int y,int add)//线段树修改操作。{ if (f[r].mx<add) f[r].mx=add; if ((f[r].x==x)&&(f[r].y==y)) return 0; int mid=(f[r].x+f[r].y)/2; if (y<=mid) insert(r*2,x,y,add); else if (x>mid) insert(r*2+1,x,y,add); else insert(r*2,x,mid,add),insert(r*2+1,mid+1,y,add);}int find(int r,int x,int y)//线段树查找。{ if ((f[r].x==x)&&(f[r].y==y)) return f[r].mx; int mid=(f[r].x+f[r].y)/2; if (y<=mid) return find(r*2,x,y); else if (x>mid) return find(r*2+1,x,y); else return max(find(r*2,x,mid),find(r*2+1,mid+1,y));}int maketree(int r,int x,int y)//建树{ f[r].x=x; f[r].y=y; f[r].mx=-2000000000; if (x==y) return 0; int mid=(x+y)/2; maketree(r*2,x,mid),maketree(r*2+1,mid+1,y);}int main(){ scanf("%d%d",&n,&m); maketree(1,1,n+n); int ans=0; int longth=0; for (int i=1;i<=n;i++)//输入和操作 { char s; cin>>s; int ii; scanf("%d",&ii); if (s=='A') { ii+=ans; ii=ii%m; longth++; insert(1,longth,longth,ii); } else { ans=find(1,longth-ii+1,longth); printf("%d\n",ans); } }}
1 0
- 最大值[JSOI2008] 洛谷1198 线段树
- [省选] [线段树] [BZOJ1012] JSOI2008 最大值 (max)
- 洛谷1198 最大值 线段树
- 【JSOI2008】最大数 线段树
- [JSOI2008]最大数 --线段树
- 洛谷P1198 [JSOI2008]最大数(线段树)
- Tyvj1821 [JSOI2008]最大值
- JSOI2008—— maxnumber(线段树)
- 【bzoj1012】【JSOI2008】【最大数】【maxnumber】【线段树】
- [BZOJ1012][JSOI2008][线段树]最大数maxnumber
- 【线段树】BZOJ1012 [JSOI2008]最大数maxnumber
- [JSOI2008]最大数maxnumber 线段树
- bzoj1012 [JSOI2008] 最大数maxnumber 线段树
- hdu1823 二维线段树~最大值
- 线段树求区间最大值
- 线段树区间求最大值
- 线段树区间和最大值
- 线段树求区间最大值
- poweredge r610的raid卡
- ImageNet和CNN可以帮助医学图像的识别吗?
- 63. Unique Paths II
- Linux多线程同步之条件变量
- 第一周 + 周末项目文档
- 最大值[JSOI2008] 洛谷1198 线段树
- 【BZOJ 2438】[中山市选2011]杀人游戏 概率+联通分量
- Decode Ways
- 计算机--机器学习---机器learning基石sum
- 数据结构(2):单向链表的反转
- Hadoop 图像小文件查重方法
- IntelliJ IDEA 最常用快捷键
- 使用模板生成xml格式
- 积少成多,记录java菜鸟的成长之路(一)