标签:
献上黑历史:
CE的几次是因为蒟蒻内外循环用同一个量,ce++
WA是因为蒟蒻不会写线段树,写了个单调队列,OK——W
TLE是因为蒟蒻脑子有病:
while m<>0 do begin ………… end;没有加dec(m);
RE是因为蒟蒻数组开太小:第一次开110000;第二次开200000;结果就…………
AC是因为数组开大一点,学学MZL大神的线段树,数组开到800005(⊙o⊙)…
sb代码献上,并在此献上膝盖给MZL
var len,x,n,d,m,lst:longint; op:char; mx:array[1..200000]of longint; function max(a,b:longint):longint; begin if a>b then exit(a) else exit(b); end; procedure up(rt:longint); begin mx[rt]:=max(mx[rt*2],mx[rt*2+1]); end; procedure update(p,v,l,r,rt:longint); var m:longint; begin if l=r then begin mx[rt]:=v; exit; end; m:=(l+r)div 2; if m>=p then update(p,v,l,m,rt*2) else update(p,v,m+1,r,rt*2+1); up(rt); end; function query(left,right,l,r,rt:longint):longint; var m,ret:longint; begin if (left<=l)and(right>=r) then exit(mx[rt]); m:=(l+r)div 2; ret:=0; if left<=m then ret:=max(ret,query(left,right,l,m,rt*2)); if right>m then ret:=max(ret,query(left,right,m+1,r,rt*2+1)); exit(ret); end; begin x:=0;len:=0; readln(n,d); m:=n; while m<>0 do begin readln(op,x); if op=‘A‘ then begin inc(len); update(len,(x+lst)mod d,1,n,1); end else begin lst:=query(len-x+1,len,1,n,1); writeln(lst); end; dec(m); end; end.
ORZ MZL 阿门
{数组}
ORZ MZL
献上膝盖,大神一次过………………
蒟蒻狂W/R/C/T…………
标签:
原文地址:http://www.cnblogs.com/Jrzn/p/5802731.html