bzoj1012(线段树或单调队列)
来源:互联网 发布:淘宝纳米碳溶胶 编辑:程序博客网 时间:2024/05/16 23:45
线段树
#include<cstdio>#include<cstdlib>#include<cmath>#include<cstring>#include<algorithm>using namespace std;struct aa{int l,r,mx;}a[200005*4];int n,tot,m,mod;void build(int i,int l,int r){a[i].l=l;a[i].r=r;if (l==r) return ;int mid=(l+r)>>1;build(i<<1,l,mid);build(i<<1|1,mid+1,r); }void add(int i,int x,int val){if (a[i].l==a[i].r) {a[i].mx=val;return ;}int mid=(a[i].l+a[i].r)>>1;if (mid>=x) add(i<<1,x,val);else add(i<<1|1,x,val);a[i].mx=max(a[i<<1].mx,a[i<<1|1].mx);}int query(int i,int l,int r){if (a[i].l==l&&a[i].r==r) return a[i].mx;int mid=(a[i].l+a[i].r)>>1;if (mid>=r) return query(i<<1,l,r);else if (mid<l) return query(i<<1|1,l,r);else return max(query(i<<1,l,mid),query(i<<1|1,mid+1,r));}int main(){scanf("%d%d",&m,&mod);build(1,1,m);char ch[2];int x,last=0;while (m--){scanf("%s%d",ch,&x);if (ch[0]=='A') add(1,++tot,(x+last)%mod);else printf("%d\n",last=query(1,tot-x+1,tot));}return 0;}
单调队列,取后面那个区间最大值,在单调队列中用二分查找处理
#include<cstdio>#include<cstdlib>#include<cmath>#include<cstring>#include<algorithm>using namespace std;int n,m,last,mod;int q[200005],id[200005],head,tail;void add(int x){while (q[tail]<=x && tail) tail--;q[++tail]=x;id[tail]=++n;}int query(int x){int l=n-x+1;int k=lower_bound(id+head,id+tail+1,l)-id;return q[k];}int main(){scanf("%d%d",&m,&mod);char ch[2];int x;head=1;tail=0;while (m--){scanf("%s%d",ch,&x);if (ch[0]=='A') add((x+last)%mod);else printf("%d\n",last=query(x));}return 0;}
0 0
- bzoj1012(线段树或单调队列)
- bzoj1012 [JSOI2008]最大数(单调栈+二分/线段树)
- bzoj1012-(线段树)
- hdu 4122 单调队列或线段树
- poj 2823 Sliding Window 单调队列或线段树
- CodeForces - 91B 单调队列 或 线段树
- BZOJ 1012 最大数maxnumber 单调队列或线段树
- 物理( 线段树套单调队列 )
- ZOJ 3632 Watermelon Full of Water(dp+线段树或单调队列优化)
- Sliding Window(单调队列维护或线段树求区间最大最小值)
- BZOJ1012 最大数maxnumber (线段树)
- XDU-1156 等待队列 (线段树||单调队列)
- poj 2823 Sliding Window (单调队列 or 线段树)
- POJ 2823 Sliding Window(单调队列||线段树)
- [caioj] 问题 E: 单调队列3 (线段树)
- POJ 3162 Walking Race(单调队列或线段树加树型DP)
- [BZOJ1012][JSOI2008]最大数maxnumber(线段树)
- bzoj1012: [JSOI2008]最大数maxnumber(线段树)
- FZU 2150 Fire Game 枚举BFS
- MFC中listControl控件右键双击响应事件
- Python3中替代Python2中cmp()函数的新函数(gt,ge,eq,le,lt)
- JS学习笔记-CSS篇(一)
- 快速排序一次排序的应用
- bzoj1012(线段树或单调队列)
- 蒙特·卡罗方法-转
- JP1.1
- kei文件在用word打开时中文是乱码的解决办法
- ORA-08103 错误解决
- NOIP 2015 D2 T2 子串 substring
- hdu1024 Max Sum Plus Plus
- Longest Palindromic Substring_Leetcode_#5
- 电脑忘记密码的操作