集合Hash雜湊

2021-08-13 02:43:44 字數 2194 閱讀 1719

集合(normal)

time limit:2000ms  memory limit:65536k

total submit:563 accepted:182

description

給定兩個集合a、b,集合內的任一元素x滿足1 ≤ x ≤ 109,並且每個集合的元素個數不大於105。我們希望求出a、b之間的關係。 

任 務 :給定兩個集合的描述,判斷它們滿足下列關係的哪一種: 

a是b的乙個真子集,輸出「a is a proper subset of b」 

b是a的乙個真子集,輸出「b is a proper subset of a」 

a和b是同乙個集合,輸出「a equals b」 

a和b的交集為空,輸出「a and b are disjoint」 

上述情況都不是,輸出「i'm confused!」 

input

輸入有兩行,分別表示兩個集合,每行的第乙個整數為這個集合的元素個數(至少乙個),然後緊跟著這個集合的元素(均為不同的正整數)

output

只有一行,就是a、b的關係。

sample input

樣例12 55 27

2 55 27

樣例23 9 24 1995

2 9 24

樣例33 1 2 3

4 1 2 3 4

樣例43 1 2 3

3 4 5 6

樣例52 1 2

2 2 3

sample output

樣例1

a equals b

樣例2b is a proper subset of a

樣例3a is a proper subset of b

樣例4a and b are disjoint

樣例5i'm confused!

//思路:很簡單經典普通的hash,自己看吧,都可以作為模板了……
const

max=1580089;//開大一點,不然效率會很低

var f:array[0..max] of longint;

a:array[0..1200000]of longint;

ans,an,bn,j:longint;

function locate(x:longint):longint;

var i:longint;

begin

i:=x mod max;

while (f[i]<>0)and(f[i]<>x)do inc(i);//確定位置存放f[-]

f[i]:=x;

end;

procedure ok(x:longint);

var i:longint;

begin

i:=x mod max;

while (f[i]<>0)and(f[i]<>x) do i:=i+1;//尋找f[-]

if f[i]=x then inc(ans);//判斷啦,根據題意

end;

begin

read(an);

for j:=1 to an do

begin

read(a[j]);

locate(a[j]);

end;

read(bn);

for j:=1 to bn do

begin

read(a[j]);

ok(a[j]);//我的想法是存入乙個陣列,另乙個用來比較

end;

if (an=bn)and(ans=an)and(ans=bn)then write('a equals b')else//利用an,bn的長度和ans的大小可以直接判斷

if (anbn)and(ans=bn)then write('b is a proper subset of a')else

if (ans=0) then write('a and b are disjoint') else

write('i''m confused!');//記得打'!!!!

end.

Hash 雜湊 雜湊

hash 一種用於查詢的資料結構 雜湊查詢的前提是已經一定的規則方法建好了雜湊表。基本思想是 關鍵字 位址轉換法 以資料物件的關鍵字為自變數,通過乙個確定的函式關係h,計算出對應的函式值h key 把這個值解釋為資料物件的儲存位址,並按此存放,即儲存位置 h key 關鍵 1.構造好的雜湊函式 2....

雜湊(hash 雜湊表)

可以認為雜湊有著陣列的思想,它將所有的資料段拼成乙個陣列 順序表 進行儲存,通過雜湊函式,可以基本上以o 1 的時間複雜度來查詢和儲存資料。通過資料段中的唯一關鍵字 key 經過某種演算法,得出此資料段在整個雜湊陣列 順序表 中的的下標,然後直接取元素即可。有資料結構如下 資料段 key,value...

Hash和雜湊 雜湊 表

hash又稱為雜湊,是把任意長度的輸入 又叫做預對映pre image 通過雜湊演算法變成固定長度的輸出,該輸出就是雜湊值。hash演算法還有乙個特點,就是很難找到逆向規律。在同一函式下,如果兩個雜湊值是不相同的,那麼這兩個雜湊值的原始輸入也是不同的。hash演算法又被稱為雜湊演算法。雖然被稱為演算...