神奇的操作。。。

P1198 [JSOI2008] 最大数

#include<cstdio> #include<iostream> using namespace std; long long m,p,n=0; long long shu[2000001]; char c; long long cha(long long,long long,long long,long long,long long); long long jl[2000001]; int wow=0; long long jia(long long,long long,long long,long long,long long); long long a=0; int main() { cin>>m>>p; for(long long j=1;j<=m;j++) { long long lua=0; cin>>c; if(c=='Q') { cin>>lua; a=cha(n-lua+1,n,1,1,m); jl[++wow]=a; } else { n++; cin>>lua; lua=(lua+a)%p; jia(n,lua,1,1,m); } } for(int es=1;es<=wow;es++) cout<<jl[es]<<endl; return 0; } long long cha(long long zuo,long long you,long long trt,long long x,long long y) { long long mam=0; if((zuo<=x)&&(you>=y)) return shu[trt]; if(zuo<=(x+y)/2) mam=max(mam,cha(zuo,you,trt*2,x,(x+y)/2)); if(you>(x+y)/2) mam=max(mam,cha(zuo,you,trt*2+1,(x+y)/2+1,y)); return mam; } long long jia(long long wei,long long mu,long long rt,long long zuo,long long you) { if((wei==zuo)&&(wei==you)) { shu[rt]=mu; return 0; } if(wei<=(zuo+you)/2) jia(wei,mu,rt*2,zuo,(zuo+you)/2); if(wei>(zuo+you)/2) jia(wei,mu,rt*2+1,(zuo+you)/2+1,you); shu[rt]=max(shu[rt*2],shu[rt*2+1]); return 0; } cincout版
by 许豪 @ 2018-10-29 21:55:21


@[xu_hao](/space/show?uid=36506) 希望更丰富的展现?使用Markdown。还有Luogu的评测机是`Linux`的环境。
by andyli @ 2018-10-29 21:56:40


#include<cstdio> #include<iostream> using namespace std; long long m,p,n=0; long long shu[2000001]; char c; long long cha(long long,long long,long long,long long,long long); long long jl[2000001]; int wow=0; long long jia(long long,long long,long long,long long,long long); long long a=0; int main() { cin>>m>>p; getchar(); for(long long j=1;j<=m;j++) { long long lua=0; scanf("%c",&c); if(c=='Q') { scanf("%d",&lua); a=cha(n-lua+1,n,1,1,m); jl[++wow]=a; } else { n++; scanf("%lld",&lua); lua=(lua+a)%p; jia(n,lua,1,1,m); } getchar(); } for(int es=1;es<=wow;es++) printf("%lld\n",jl[es]); return 0; } long long cha(long long zuo,long long you,long long trt,long long x,long long y) { long long mam=0; if((zuo<=x)&&(you>=y)) return shu[trt]; if(zuo<=(x+y)/2) mam=max(mam,cha(zuo,you,trt*2,x,(x+y)/2)); if(you>(x+y)/2) mam=max(mam,cha(zuo,you,trt*2+1,(x+y)/2+1,y)); return mam; } long long jia(long long wei,long long mu,long long rt,long long zuo,long long you) { if((wei==zuo)&&(wei==you)) { shu[rt]=mu; return 0; } if(wei<=(zuo+you)/2) jia(wei,mu,rt*2,zuo,(zuo+you)/2); if(wei>(zuo+you)/2) jia(wei,mu,rt*2+1,(zuo+you)/2+1,you); shu[rt]=max(shu[rt*2],shu[rt*2+1]); return 0; } printf scanf 版
by 许豪 @ 2018-10-29 21:56:58


@[andyli](/space/show?uid=84282) linux是什Markdown又是什?
by 许豪 @ 2018-10-29 21:58:31


getchar据说有毒 我也不知道为什么
by zhutier @ 2018-10-29 22:00:43


|