整数の所定の2セット、セットの類似度であると定義される /、ここで Nのcは二組によって共有される別個の共通の番号の数であり、 Nのtは異なる数の合計数であります二組。あなたの仕事は、セットの任意のペアの類似度を計算することです。
入力仕様:
各入力ファイルには、1つのテストケースが含まれています。各ケースは、第一の正の整数与える N(集合の総数≤)を。次いで、 N行はそれぞれが正でセットを与え、フォロー M(≤)と、続いて [範囲内Mintegers 0]。セットの入力後、正の整数 K(≤)は、続いて与えられた クエリのKlines。各クエリは、(セットは1から番号が付けられているセット番号の組を与える N)。行のすべての数字は、スペースで区切られます。
出力仕様:
各クエリに対して、1つの小数場所まで正確なパーセンテージの形で、一列に集合の類似性を印刷します。
サンプル入力:
3
3 99 87 101
4 87 101 5 87
7 99 101 18 5 135 18 99
2
1 2
1 3
サンプル出力:
50.0% 33.3%
NCの2つの一般的なデジタルアレイ番号で
デエンファシスNtが2つのデータセットの総数であります
1の#include <iostreamの> 2の#include <unordered_set> // 用は来去重セット 3を 使用して 名前空間STDを、 4 整数N、M、K、D。 5 unordered_set < INT > NUMS [ 55 ]。 6 INT メイン() 7 { 8 CIN >> N。 9 用(int型 i = 1 ; iが= Nを<++ i)が 10 { 11 CIN >> M。 12 のための(int型 J = 0; J <M。++ j)の 13 { 14 CIN >> D。 15 NUMS [I] .insert(D)。 16 } 17 } 18 CIN >> K。 19 のために(int型 I = 0 ; iがKを<; ++ i)が 20 { 21 int型A、B。 22の ダブル RES、ノースカロライナ= 0、Ntを= 0 ; 23 CIN >> A >> B; 24 のための:(NUMS [A]オートV) 25 もし(NUMS [B] .find(V)=!NUMS [B] .END()) 26 ノースカロライナ++ 。 27 Ntを= NUMS [A] .size()+ NUMS [B] .size() - ノースカロライナ。 28 のRES =(NC / NT)* 100.0 。 29 のprintf(" %.1f %% \ n " 、RES)。 30 } 31 リターン 0 。 32 }