分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > IT知识

[BZOJ1012][JSOI2008]最大数maxnumber 线段树

发布时间:2023-09-06 01:07责任编辑:苏小强关键词:暂无标签

没什么好说的……线段树维护区间就行了。第一次居然写错了,真丢人。

 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 typedef long long ll; 6 ll inline readll(){ 7 ????ll Num;char ch; 8 ????while((ch=getchar())<‘0‘||ch>‘9‘);Num=ch-‘0‘; 9 ????while((ch=getchar())>=‘0‘&&ch<=‘9‘) Num=Num*10+ch-‘0‘;10 ????return Num;11 }12 void outll(ll x){13 ????if(x>=10) outll(x/10);14 ????putchar(x%10+‘0‘);15 }16 int mx[200010<<2],len=0;17 #define lson l,mid,rt<<118 #define rson mid+1,r,rt<<1|119 void Pushup(int &rt){20 ????mx[rt]=max(mx[rt<<1],mx[rt<<1|1]);21 }22 void Add(int l,int r,int rt,int pos,int x){23 ????if(l==r){24 ????????mx[rt]=x;25 ????????return;26 ????}27 ????int mid=l+r>>1;28 ????if(pos<=mid) Add(lson,pos,x);29 ????else Add(rson,pos,x);30 ????Pushup(rt);31 }32 int Qry(int l,int r,int rt,int L,int R){33 ????if(l>=L&&R>=r) return mx[rt];34 ????int mid=l+r>>1,ret=0;35 ????if(L<=mid) ret=max(ret,Qry(lson,L,R));36 ????if(R>mid) ret=max(ret,Qry(rson,L,R));37 ????return ret;38 }39 int main(){40 ????int m=readll(),41 ????????d=readll();42 ????char opt[5];43 ????ll t=0,num;44 ????memset(mx,0,sizeof(mx));45 ????for(int i=1;i<=m;i++){46 ????????scanf("%s",opt);47 ????????num=readll();48 ????????if(opt[0]==‘A‘) Add(1,m,1,++len,(num%d+t%d)%d);49 ????????else{50 ????????????t=Qry(1,m,1,len-num+1,len);51 ????????????outll(t);52 ????????????putchar(‘\n‘);53 ????????}54 ????}55 ????return 0;56 }

[BZOJ1012][JSOI2008]最大数maxnumber 线段树

原文地址:http://www.cnblogs.com/halfrot/p/7449885.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved