2009国家集训队小Z的袜子
2014-06-19 19:20
316 查看
莫队算法?
感觉没什么优越性啊?难道就是因为在排序的时候cmp函数的不同?这样做为什么减少时限啊?
我带着疑惑敲了代码,却一直有bug……
代码:
View Code
感觉没什么优越性啊?难道就是因为在排序的时候cmp函数的不同?这样做为什么减少时限啊?
我带着疑惑敲了代码,却一直有bug……
代码:
type node=record l,r,id,x,y:int64; end; var a,ans:array[1..55000] of node; s,c,p:array[1..55000] of longint; i,n,m,block,l,r,k:longint; anss:int64; function gcd(x,y:longint):longint; begin if y=0 then exit(x) else exit(gcd(y,x mod y)); end; function cmp(x,y:node):boolean; begin if p[x.l]=p[y.l] then exit(x.r<y.r); exit(x.l<y.l); end; procedure sort(h,l:longint); var i,j:longint; tmp,mm:node; begin i:=h;j:=l;mm:=a[(i+j)>>1]; repeat while cmp(a[i],mm) do inc(i); while cmp(mm,a[j]) do dec(j); if i<=j then begin tmp:=a[i];a[i]:=a[j];a[j]:=tmp; inc(i);dec(j); end; until i>j ; if i<l then sort(i,l); if j>h then sort(h,j); end; procedure init; begin readln(n,m); for i:=1 to n do read(c[i]); block:=trunc(sqrt(n)); for i:=1 to n do p[i]:=(i-1) div block+1; for i:=1 to m do begin readln(a[i].l,a[i].r); a[i].id:=i; end; end; procedure update(p,add:longint); begin dec(anss,sqr(s[c[p]])); inc(s[c[p]],add); inc(anss,sqr(s[c[p]])); end; procedure main; begin sort(1,m); l:=1;r:=0; for i:=1 to m do begin while r<a[i].r do begin update(r+1,1);inc(r); end; while r>a[i].r do begin update(r,-1);dec(r); end; while l<a[i].l do begin update(l,-1);inc(l); end; while l>a[i].l do begin update(l-1,1);dec(l); end; if a[i].l=a[i].r then begin a[i].x:=0;a[i].y:=1; continue; end; with a[i] do begin x:=anss-(r-l+1); y:=(r-l+1)*(r-l); k:=gcd(x,y); x:=x div k;y:=y div k; end; end; for i:=1 to m do ans[a[i].id]:=a[i]; for i:=1 to m do with ans[i] do writeln(x,'/',y); end; begin init; main; end.
View Code
相关文章推荐
- 莫队+分块 【2009国家集训队】小Z的袜子(hose) bzoj2038
- bzoj2038 [2009国家集训队]小Z的袜子(hose)
- BZOJ 2038: [2009国家集训队]小Z的袜子(hose)
- [BZOJ]2038: [2009国家集训队]小Z的袜子(hose) 莫队算法
- 2038: [2009国家集训队]小Z的袜子(hose) (莫队算法)
- 2038: [2009国家集训队]小Z的袜子(hose) - BZOJ
- 2038: [2009国家集训队]小Z的袜子(hose)
- Bzoj 2038: [2009国家集训队]小Z的袜子(hose)
- BZOJ 2038 [2009国家集训队]小Z的袜子(hose)题解 莫队算法
- BZOJ 2038: [2009国家集训队]小Z的袜子(hose) 莫队算法
- bzoj2038: [2009国家集训队]小Z的袜子(hose)(莫队+分块模板题)
- 【BZOJ】2038: [2009国家集训队]小Z的袜子(hose)(组合计数+概率+莫队算法+分块)
- [BZOJ 2038] 2009国家集训队 小Z的袜子 · 莫队算法
- bzoj 2038 [2009国家集训队]小Z的袜子 莫队算法
- BZOJ 2038: [2009国家集训队]小Z的袜子(hose)|分块|莫队算法
- bzoj2038【2009国家集训队】小Z的袜子(hose)
- bzoj2038 [2009国家集训队]小Z的袜子(hose)
- 【bzoj2038】[2009国家集训队]小Z的袜子(hose) 莫队算法
- [2009国家集训队]小Z的袜子--莫队算法
- bzoj2038 [2009国家集训队]小Z的袜子(hose) (莫队裸题)