給定兩個整數集合,它們的相似度定義為:nc/nt*100%。其中nc是兩個集合都有的不相等整數的個數,nt是兩個集合一共有的不相等整數的個數。你的任務就是計算任意一對給定集合的相似度。
輸入格式:
輸入第一行給出乙個正整數n(<=50),是集合的個數。隨後n行,每行對應乙個集合。每個集合首先給出乙個正整數m(<=104),是集合中元素的個數;然後跟m個[0, 109]區間內的整數。
之後一行給出乙個正整數k(<=2000),隨後k行,每行對應一對需要計算相似度的集合的編號(集合從1到n編號)。數字間以空格分隔。
輸出格式:
對每一對需要計算的集合,在一行中輸出它們的相似度,為保留小數點後2位的百分比數字。
輸入樣例:
33 99 87 101
4 87 101 5 87
7 99 101 18 5 135 18 99
21 2
1 3
輸出樣例:
50.00%33.33%
思路:明顯是set題,直接放進set容器,注意先得到共有的, 然後 集合個數之和-共有的 就是不等的。
ac**:
#include#includeusing namespace std;
sets[55];
void cal(int u, int v)
int nt = s[u].size() + s[v].size() - nc;//總是不這樣想,所以超時了
printf("%.2lf%%\n", (double)nc / nt * 100);
}int main()
} int c_num, u, v;
cin >> c_num;
for(int i = 0; i < c_num; i++)
return 0;
}
PTA 天梯賽訓練 L2 005 集合相似度
給定兩個整數集合,它們的相似度定義為 nc n t 100 其中nc是兩個集合都有的不相等整數的個數,n t是兩個集合一共有的不相等整數的個數。你的任務就是計算任意一對給定集合的相似度。輸入格式 輸入第一行給出乙個正整數n 50 是集合的個數。隨後n行,每行對應乙個集合。每個集合首先給出乙個正整數m...
L2 005 集合相似度
給定兩個整數集合,它們的相似度定義為 nc nt 100 其中nc是兩個集合都有的不相等整數的個數,nt是兩個集合一共有的不相等整數的個數。你的任務就是計算任意一對給定集合的相似度。輸入格式 輸入第一行給出乙個正整數n 50 是集合的個數。隨後n行,每行對應乙個集合。每個集合首先給出乙個正整數m 1...
L2 005 集合相似度
給定兩個整數集合,它們的相似度定義為 nc nt 100 其中nc是兩個集合都有的不相等整數的個數,nt是兩個集合一共有的不相等整數的個數。你的任務就是計算任意一對給定集合的相似度。輸入第一行給出乙個正整數n 50 是集合的個數。隨後n行,每行對應乙個集合。每個集合首先給出乙個正整數m 104 是集...