(%%する、printfの出力%のセットを使って、新しい学校、)PATクラス1063セットの類似性(25点)

1063セットの類似性(25分)
 

整数の所定の2セット、セットの類似度であると定義される  /、ここで  Nのcは二組によって共有される別個の共通の番号の数であり、  Nのtは異なる数の合計数であります二組。あなたの仕事は、セットの任意のペアの類似度を計算することです。

入力仕様:

各入力ファイルには、1つのテストケースが含まれています。各ケースは、第一の正の整数与える  N(集合の総数≤)を。次いで、  Nラインは、それぞれが正でセットを与え、フォロー  M(≤)と、続いて  [範囲のMの整数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%
著者:CHEN、越
単位:浙江大学
制限時間:500ミリ秒
メモリの制限:64メガバイト

 

質問の意味:

タイトル類似度の定義は、Ncが二組に共通であるNC / Ntの* 100%、要素の数に等しくされていない設定、Ntとは、二つの等しくないコレクション内の要素の数です。あなたの仕事は、コレクションの類似性を与えられた計算することです。

NCは、二組の交差内の要素の数です。
NTは、二組のセット内の要素の数です。

ソリューション:

もともと配列は、明らかにメモリの制限、スピードが設定され、非常に便利なああを学びました!前に一度。

%%するprintfの出力%

ACコード:

 

書式#include <iostreamの> 
の#include < 設定 > 
書式#include <アルゴリズム> 
書式#include < 文字列 > 
の#include <CStringの>
 使用して 名前空間はstd;
セット < INT > S [ 55 ]。
INTのN、M、K。
INT メイン(){ 
    CIN >> N。
    以下のためにint型 i = 1 ; iが<= N; iが++ ){ 
        CIN >> Mと、
        INT J = 1 ; J <= Mであり、j ++ ){
             int型バツ; 
            cinを >> X; 
            S [i]は.insert(X)。
        } 
    } 
    CIN >> K。
    以下のためにint型 i = 1 ; iは= Kを<; iは++は){
         int型、B。
        CIN >> A >> B;
        設定 < 整数 > ::イテレータit。
        int型のカウント= 0 ;
        (;それ= sで[A] .END();!それはS [A] .beginを()=それ++ ){
             もし、(S [B] .find(※)= sで[B] .END()! )++数えます
        }     
        のprintf("%.1f %% \ n "、*カウント1.0 /(s[a].size()+s[b].size()-count)* 100 ); 
    } 
    戻り 0 ; 
}

 

おすすめ

転載: www.cnblogs.com/caiyishuai/p/11609317.html