L2 005 集合相似度

2021-08-17 21:28:49 字數 1557 閱讀 1871

時間限制

400 ms

記憶體限制

65536 kb

**長度限制

8000 b

判題程式

standard

作者

陳越

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

輸入格式:

輸入第一行給出乙個正整數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%

分析:nc表示兩個集合中都有的數字,且這些數字在他們的集合中如果有多個的話就只能算乙個

nt表示兩個集合中共有的不相等整數的個數

例子1:比如下面這兩個集合:

99 87 101

87 101 5 87

nc:87和101,二者都有,所以nc=2;

nt: 兩個集合合併在一起然後去除重複後只有99 87 101 5,所有nt=4

例子二:

99 87 101

99 101 18 5 135 18 99

nc:只有99 101是兩個集合中都有的數字,所有nc=2;

nt:兩個集合合併在一起然後去除重複後,只有99 101 87 18 5 135,所有nt=6;

總結:nc:就是兩個集合各自去掉重複的數字之後,兩個集合中都有的數字的個數

nt:兩個集合各種去重之後所有數字的個數減去nc

**如下:

#includeusing

namespace

std;

intmain()

}intk;

scanf("%d

",&k);

while(k--)

int nt=s[x].size()+s[y].size()-nc;

//printf("%d***%d\n",nc,nt);

printf("

%.2lf%%\n

",nc*1.0/nt*100

); }

return0;

}

不足錯誤的地方歡迎拍磚哦!

技術在於分享

L2 005 集合相似度

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

L2 005 集合相似度

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

L2 005 集合相似度

時間限制 400 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 陳越 給定兩個整數集合,它們的相似度定義為 nc nt 100 其中nc是兩個集合都有的不相等整數的個數,nt是兩個集合一共有的不相等整數的個數。你的任務就是計算任意一對給定集合的相似度。...