zoukankan      html  css  js  c++  java
  • bzoj2761: [JLOI2011]不重复数字(hash)

          题目大意:给出N个数,要求把其中重复的去掉,只保留第一次出现的数。例如,给出的数为1 2 18 3 3 19 2 3 6 5 4,其中2和3有重复,去除后的结果为1 2 18 3 19 6 5 4。

          随意哈希一下。。。【我不会什么set啊treap啊之类的QAQ

    代码如下:

    var
      t,n,i,x:longint;
      v:array[0..500009]of boolean;
      vv,b,a,ans:array[0..500009]of int64;
     
    function hash(x:int64):longint;
    var
      xx:longint;
    begin
      xx:=((x mod 500009)+500009)mod 500009;
      while (b[xx]<>x)and(b[xx]<>0) do
      xx:=(xx+1)mod 500009;
      b[xx]:=x;
      exit(xx);
    end;
     
    begin
      readln(t);
      while t>0 do
      begin
        dec(t);
        readln(n);
        fillchar(b,sizeof(b),0);
        fillchar(v,sizeof(v),false);
        for i:=1 to n do
        begin
          vv[i]:=-1;
          read(a[i]);
          x:=hash(a[i]);
          if not v[x] then
          begin
            v[x]:=true;
            vv[i]:=x;
          end;
        end;
        ans[0]:=0;
        for i:=1 to n do
        begin
          if vv[i]<>-1 then
          begin
            inc(ans[0]);
            ans[ans[0]]:=b[vv[i]];
          end;
        end;
        for i:=1 to ans[0]-1 do write(ans[i],' ');
        writeln(ans[ans[0]]);
      end;
    end.
    View Code
  • 相关阅读:
    PHP (20140519)
    PHP (20140516)
    js(20140517)在JS方法中返回多个值的三种方法
    PHP (20140515)
    PHP (20140514)
    Java内网发送邮件
    每日一“酷”之Cookie
    每日一“酷”之Queue
    每日一“酷”之pprint
    每日一“酷”之copy
  • 原文地址:https://www.cnblogs.com/Sakits/p/5989763.html
Copyright © 2011-2022 走看看