首页 > 代码库 > BZOJ 1062
BZOJ 1062
program candy bzoj1062;const maxc=1000100; maxm=4010; maxn=2010;var n,len,m,i,p,t,l,r,c,d,q:longint; s:array[0..1,0..maxn,0..maxm] of longint; x,y:array[0..maxc] of longint;procedure add(p,x,y,v:longint);var i:longint;begin inc(x); inc(y); while x<maxn do begin i:=y; while i<maxm do begin inc(s[p,x,i],v); inc(i,i and -i); end; inc(x,x and -x); end;end;function sum(p,x,y:longint):longint;var i:longint;begin if (x<0)or(y<0) then exit(0); inc(x); inc(y); sum:=0; if x>n then x:=n+1; if y>m then y:=m+1; while x>0 do begin i:=y; while i>0 do begin inc(sum,s[p,x,i]); dec(i,i and -i); end; dec(x,x and -x); end;end;procedure update(t,c,l,r,d:longint); inline;begin x[c]:=(t-d*l+n) mod n; y[c]:=r-l; add(0,x[c],y[c]+x[c],1); add(1,x[c],y[c]-x[c]+n,1);end; procedure change(c:longint); inline;begin add(0,x[c],y[c]+x[c],-1); add(1,x[c],y[c]-x[c]+n,-1);end; function area(p,x1,y1,x2,y2:longint):longint; inline;begin area:=sum(p,x2,y2)+sum(p,x1-1,y1-1)-sum(p,x1-1,y2)-sum(p,x2,y1-1);end; function ask(t,l,r:longint):longint; inline;var d:longint;begin d:=longint(r=len); ask:=area(0,t,l+t,t+r,m)+area(0,0,l+t-n,t+r-n-d,m)+area(1,t-r+n+d,l-t,n,m)+area(1,t-r,l-t+n,t-1,m);end; begin read(q,len); n:=len<<1; m:=len<<2; for i:=1 to q do begin read(p); case p of 1:begin read(t,c,l,r,d); update(t,c,l,r,d); end; 2:begin read(t,l,r); writeln(ask(t mod n,l,r)); end; 3:begin read(t,c); change(c); end; end; end;end.
BZOJ 1062
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。