机器翻译(noip2010)

分析:该题是经典的队列题目,直接用队列实现就可以。如果数据范围大一些的话还可hash判重!

        这可以说是一道送分的题目,但是还有粗心的学生会在这里失分,主要原因是数组的范围定义的不合适,因为空间足够用,在考试中数据范围要稍大一些。当然还有个别同学是因为模拟失误了,这种送分题目我只能说,一定要多对拍几组特殊数据,保证得满分才好!

var

  m,n,sum:longint;

  q:array[0..1000] of longint;

  head,tail:longint;

  procedure init;

  var bo:boolean;

  i,j,x:longint;

  begin

    readln(m,n);

    head:=0;tail:=0; sum:=0;

    for i:=1 to n do

      begin

        bo:=false;

        read(x);

        for j:=head+1 to   tail do

          if q[j]=x then

            begin   bo:=true;   break; end;

        if not bo  then

          begin

            if  tail-head>=M then  inc(head);

            inc(tail);  q[tail]:=x;inc(sum);

          end

      end;

      writeln(sum);

  end;

begin

  assign(input,'translate.in');reset(input);

  assign(output,'translate.out'); rewrite(output);

  init;

  close(input); close(output);

end.
View Code

 

你可能感兴趣的:(IP)