博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[BZOJ1012][JSOI2008]最大数maxnumber 线段树
阅读量:5246 次
发布时间:2019-06-14

本文共 1541 字,大约阅读时间需要 5 分钟。

题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1012

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

1 #include
2 #include
3 #include
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 }

 

转载于:https://www.cnblogs.com/halfrot/p/7449885.html

你可能感兴趣的文章
程序存储问题
查看>>
Mac版OBS设置详解
查看>>
优雅地书写回调——Promise
查看>>
第一次作业
查看>>
android主流开源库
查看>>
AX 2009 Grid控件下多选行
查看>>
PHP的配置
查看>>
Linux系列:Ubuntu虚拟机设置固定IP上网(配置IP、网关、DNS、防止resolv.conf被重写)...
查看>>
LANDR:在线母带处理
查看>>
简单的聊天脑思路
查看>>
java web项目修改favicon.ico图标的方式
查看>>
【读博笔记】 如何招聘程序员,四步法则助你成功
查看>>
Struts框架----进度1
查看>>
783. Minimum Distance Between BST Node
查看>>
剑指Offer——合并两个排序的链表
查看>>
剑指Offer——机器人的运动范围
查看>>
day01_Sock Merchant
查看>>
Round B APAC Test 2017
查看>>
Office 365 系列一 ------- 如何单个安装Office 客户端和Skype for business
查看>>
MySQL 字符编码问题详细解释
查看>>