L2 005 集合相似度 25 分

2021-10-19 10:56:28 字數 1212 閱讀 7909

給定兩個整數集合,它們的相似度定義為:n**c/n**t×100%。其中n**c是兩個集合都有的不相等整數的個數,n**t是兩個集合一共有的不相等整數的個數。你的任務就是計算任意一對給定集合的相似度。

輸入第一行給出乙個正整數n(≤50),是集合的個數。隨後n行,每行對應乙個集合。每個集合首先給出乙個正整數m(≤104),是集合中元素的個數;然後跟m個[0,109]區間內的整數。

之後一行給出乙個正整數k(≤2000),隨後k行,每行對應一對需要計算相似度的集合的編號(集合從1到n編號)。數字間以空格分隔。

對每一對需要計算的集合,在一行中輸出它們的相似度,為保留小數點後2位的百分比數字。

3

3 99 87 101

4 87 101 5 87

7 99 101 18 5 135 18 99

21 2

1 3

50.00%

33.33%

首先對樣例的第乙個詢問做乙個解釋:

相同的數字是87,101;不同的數字是99,87,101,5.所以是50.00%。

我的思路是用set對所有集合進行儲存+去重,不用vector的原因是set在之後每次的詢問中還可以起到乙個查詢的作用。

具體見**

#include

#define inf 0x3f3f3f3f

#define pi acos(-1)

using

namespace std;

typedef pair<

int,

int> p;

typedef

long

long ll;

const

int n =

1e4+19;

const ll mod =

1e9+7;

set<

int> st[n]

;double

calc

(int x,

int y)

}return

100.0*(

double

)cnt /

(double

)(n + m);}

intmain()

} cin >> k;

while

(k--

)return0;

}

L2 005 集合相似度 (25 分)

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

L2 005 集合相似度 25分

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

L2 005 集合相似度 25分

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