莫队模板

Posted qbwhtc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了莫队模板相关的知识,希望对你有一定的参考价值。

function check(x1,y1,x2,y2:longint):boolean;
begin
  if (trunc(x1/sqrt(n))>trunc(y1/sqrt(n)))or(trunc(x1/sqrt(n))=trunc(y1/sqrt(n)))and(x2>y2) then
  exit(true)
  else
  exit(false);
end;
procedure sort(ll,rr:longint);
var i,j,x,y,z:longint;
begin
  i:=ll;
  j:=rr;
  x:=l[(ll+rr) div 2];
  z:=r[(ll+rr) div 2];
  repeat
  while check(l[i],x,r[i],z) do
  inc(i);
  while check(x,l[j],z,r[j]) do
  dec(j);
  if not(i>j) then
  begin
    y:=l[i];
    l[i]:=l[j];
    l[j]:=y;
    y:=r[i];
    r[i]:=r[j];
    r[j]:=y;
    y:=num[i];
    num[i]:=num[j];
    num[j]:=y;
    inc(i);
    dec(j);
  end;
  until i>j;
  if ll<j then
  sort(ll,j);
  if i<rr then
  sort(i,rr);
end;

 

以上是关于莫队模板的主要内容,如果未能解决你的问题,请参考以下文章

[模板] 各种莫队

莫队模板

[SDOI2009][bzoj1878] HH的项链 [莫队模板题]

模板莫队相关

模板莫队相关

莫队模板