ssl1125 集合 雜湊表 二分查詢 快排

2021-08-15 22:13:04 字數 2472 閱讀 4713

今天學雜湊表,然後就第一節晚修趕快寫完作業就上了做題了,然後就做完了這道題get√。

給出兩個集合:

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!」

然後集合大小小於10^5,集合中的數大小小於10^9

input

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

output

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

sample input

樣例1

2 55 27

2 55 27

樣例2

3 9 24 1995

2 9 24

樣例3

3 1 2 3

4 1 2 3 4

樣例4

3 1 2 3

3 4 5 6

樣例5

2 1 2

2 2 3

sample output

樣例1

a equals b

樣例2

b is a proper subset of a

樣例3

a is a proper subset of b

樣例4

a and b are disjoint

樣例5

i』m confused!

這就是用快排排好第乙個集合然後用二分查詢找另乙個集合裡的數。

用雜湊表儲存第乙個集合,然後快速判斷集合中有沒有另乙個集合中的數

#include

#include//c++演算法庫自帶快排

using

namespace

std;

int n1,n2,a1[100001],a2[100001],l,r,ans,s,mid;

char c;

int main()

scanf("%d",&n2);

for (int i=1;i<=n2;i++)

sort(a1+1,a1+1+n1);//快排

for (int i=1;i<=n2;i++)

if (a1[mid]==ans) s++;//統計相同數

}//以下輸出不解釋

if (s==n1 && s==n2) printf("a equals b");

else

if (s==n1) printf("a is a proper subset of b");

else

if (s==n2) printf("b is a proper subset of a");

else

if (s==0) printf("a and b are disjoint");

else

printf("i'm confused!");

}

#include

#include

using

namespace

std;

const

int maxn=149993;//開個大一些的素數減少衝突

int n1,n2,hash[maxn],x,s;

int hashmath(int x)

//雜湊函式

int locate(int x)//尋找位置

void ins(int x)//插入函式

bool find(int x)//查詢

int main()

scanf("%d",&n2);

for (int i=1;i<=n2;i++)

//以下輸出

if (s==n1 && s==n2) printf("a equals b");

else

if (s==n1) printf("a is a proper subset of b");

else

if (s==n2) printf("b is a proper subset of a");

else

if (s==0) printf("a and b are disjoint");

else

printf("i'm confused!");

}

ssl2655 集合問題

集合問題 對於從 1 到 n 1 n 39 的連續整數集合,能劃分成兩個子集合,且保證每個集合的數字和是相等的。舉個例子,如果 n 3,對於能劃分成兩個子集合,每個子集合的所有數字和是相等的 和 這是唯一一種分法 交換集合位置被認為是同一種劃分方案,因此不會增加劃分方案總數 如果 n 7,有四種方法...

java基礎 二 集合

集合 集合的頂層介面iterator 單列集合的頂層介面collection 雙列集合的頂層介面map arraylist 底層實現是陣列 查詢快 增刪比較慢 預設大小是10 擴容為1.5 元素可重複 linkedlist 底層是鍊錶 查詢慢 增刪快 元素可重複 hashset 底層實現是hashm...

PAT L2 005 集合相似度 雜湊 map

給定兩個整數集合,它們的相似度定義為 nc nt 100 其中nc 是兩個集合都有的不相等整數的個數,nt 是兩個集合一共有的不相等整數的個數。你的任務就是計算任意一對給定集合的相似度。輸入格式 輸入第一行給出乙個正整數n 50 是集合的個數。隨後n行,每行對應乙個集合。每個集合首先給出乙個正整數m...