尺取法模板 【pascal】(附poj 3061&poj 2739)

尺取法,详细的介绍以及图片网上有很多,这里不再啰嗦,

个人更喜欢叫它毛虫算法,以至于在程序中的名字都叫caterpillar(毛虫),

因为它的移动和毛毛虫真的是太像了=w=

时间复杂度:O(n)

直接贴代码(模板)

poj 3061

var
        t,n,m,ans       :longint;
        i               :longint;
        a               :array[0..100010] of longint;
procedure caterpillar;
var
        l,r,sum:longint;
begin
   l:=1;r:=1;sum:=a[1];
   while true do
   begin
      while (r0) do
   begin
      dec(t);
      read(n,m);
      ans:=n+1;
      for i:=1 to n do read(a[i]);
      caterpillar;
      if ans=n+1 then writeln(0) else writeln(ans);
   end;
end.


poj 2739

var
        n,ans,m         :longint;
        i               :longint;
        a               :array[0..10010] of longint;
procedure find(x:longint);
var
        j:longint;
begin
   for j:=2 to trunc(sqrt(x)) do
    if (x mod j=0) then exit;
   inc(n);
   a[n]:=x;
end;

procedure caterpillar;
var
        l,r,sum:longint;
begin
   l:=1;r:=1;sum:=2;
   while true do
   begin
      while (r0) do
   begin
      ans:=0;
      caterpillar;
      writeln(ans);
      read(m);
   end;
end.

——by Eirlys

尺取法模板 【pascal】(附poj 3061&poj 2739)_第1张图片

你可能感兴趣的:(尺取法(毛虫算法),模板)