pta 集合相似度 stl

2021-07-28 23:09:35 字數 1199 閱讀 9673

5-9 集合相似度   (25分)

給定兩個整數集合,它們的相似度定義為:n_c / n_t \times 100\%n​

c​​/

n​t​

​×10

0%。其中n_cn​

c​​是兩個集合都有的不相等整數的個數,n_tn​

t​​是兩個集合一共有的不相等整數的個數。你的任務就是計算任意一對給定集合的相似度。

輸入第一行給出乙個正整數n

n(\le 50≤5

0),是集合的個數。隨後n

n行,每行對應乙個集合。每個集合首先給出乙個正整數m

m(\le 10^4≤1

0​4​

​),是集合中元素的個數;然後跟m

m個[0, 10^9][0

,10​

9​​]

區間內的整數。

之後一行給出乙個正整數k

k(\le 2000≤2

000),隨後k

k行,每行對應一對需要計算相似度的集合的編號(集合從1到n

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%

題意有點坑,nt就是兩個陣列裡重複元素只保留乙個後的元素個數,nc就是兩個陣列去重後相同元素的個數。

然後就是用set去做就行了,set會自動去重,且內部的find()函式就是二分的原理,時間複雜度很低。

當然二分也可以過

**:

#include using namespace std;

const int maxn=1e4+5;

set num[55];

set ::iterator it;

int main()

}int t, x, y;

cin>>t;

while(t--)

p=(int)num[x].size()+(int)num[y].size()-q;

printf("%.2lf%%\n", q/p*100);

}}

pta集合相似度

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

STL find函式 集合相似度(PTA)

include 使用格式 find 陣列的頭位址,陣列的尾位址,要找的數 或者陣列.find 要找的數 find nums.begin nums.end target vector int nums find nums,nums 5,2 返回2的位址,若find 8,則返回第乙個8的位址 或者num...

集合相似度

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