线段树——BZOJ1012/Luogu1198 [JSOI2008]最大数
2017-03-24 11:06
260 查看
http://www.lydsy.com/JudgeOnline/problem.php?id=1012
https://www.luogu.org/problem/show?pid=1198
经典老题现在才AC。。。
这题方法很多,有单调栈,有线段树,有树状数组……
我是用线段树写的
其实就是胜者树求区间最大
我们建一棵大小为m的线段树,每个节点赋值为-2^30,然后插入节点(其实就是修改)和询问都是模板了
https://www.luogu.org/problem/show?pid=1198
经典老题现在才AC。。。
这题方法很多,有单调栈,有线段树,有树状数组……
我是用线段树写的
其实就是胜者树求区间最大
我们建一棵大小为m的线段树,每个节点赋值为-2^30,然后插入节点(其实就是修改)和询问都是模板了
#include<bits/stdc++.h> #define ll long long using namespace std; char c[5]; ll m,d,q=0,n=0; ll t[800001]={0},lt[800001],rt[800001]; inline void build(ll l,ll r,ll nod){ t[nod]=-1<<30;lt[nod]=l;rt[nod]=r; if(l==r)return; ll mid=(l+r)>>1; build(l,mid,nod*2); build(mid+1,r,nod*2+1); } inline void xg(int i,int p,int nod){ if(lt[nod]==i&&rt[nod]==i)t[nod]=p; else{ ll mid=(lt[nod]+rt[nod])>>1; if(i>mid)xg(i,p,nod*2+1); else xg(i,p,nod*2); t[nod]=max(t[nod*2],t[nod*2+1]); } } inline ll s(int i,int j,int nod){ if(lt[nod]==i&&rt[nod]==j)return t[nod]; ll mid=(lt[nod]+rt[nod])>>1; if(j<=mid)return s(i,j,nod*2); if(i>=mid+1)return s(i,j,nod*2+1); ll le=s(i,mid,nod*2),re=s(mid+1,j,nod*2+1); return max(le,re); } int main() { scanf("%lld%lld",&m,&d); build(1,m,1); ll x; for(int i=1;i<=m;i++){ scanf("%s",c); scanf("%lld",&x); if(c[0]=='A'){ n++;xg(n,(x+q)%d,1); }else{ q=s(n-x+1,n,1); printf("%lld\n",q); } } return 0; }
相关文章推荐
- [JSOI2008]最大数 线段树解法
- [BZOJ1012][JSOI2008][线段树]最大数maxnumber
- BZOJ 1012[JSOI2008]最大数maxnumber (线段树解法)
- BZOJ 1012: [JSOI2008]最大数maxnumber 线段树
- [BZOJ1012]JSOI2008 最大数|线段树|平衡树
- JSOI2008最大数(线段树)
- [BZOJ] 1012 - [JSOI2008] - 最大数maxnumber - 线段树 - 单点更新 - 区间查询最大
- BZOJ 1012 JSOI2008 最大数maxnumber 单调栈+二分 / 线段树
- [省选] [线段树] [BZOJ1012] JSOI2008 最大值 (max)
- BZOJ 1012: [JSOI2008]最大数maxnumber【线段树||单调栈】
- P1198 [JSOI2008]最大数(线段树)
- [BZOJ1012][JSOI2008]最大数maxnumber(线段树)
- 1012: [JSOI2008]最大数maxnumber 线段树区间统计
- 洛谷P1198 [JSOI2008]最大数(线段树)
- [JSOI2008] [洛谷P1198] 最大数|线段树80'|单调栈100'
- BZOJ 1012: [JSOI2008]最大数maxnumber 线段树入门题
- [BZOJ 1012][JSOI2008]最大数maxnumber:线段树|单调栈
- BZOJ 题目1012: [JSOI2008]最大数maxnumber(线段树)
- bzoj1012 [JSOI2008] 最大数maxnumber 线段树
- 洛谷Oj-P1198 [JSOI2008]最大数-线段树(单点修改)