PAT甲级 1063 Set Similarity set集合的使用

PAT甲级 1063 Set Similarity set集合的使用

  • 题目要求:给出n个集合,每个集合有m个元素。对于k个查询,每个查询为两个集合的编号,输出这两个集合的相似度,相似度等于nc/nt。其中nc为两个集合相同元素的个数,nt为两个集合中不同元素的个数。
  • 学会使用STL中的set就行了。

代码如下:

#include<iostream>
#include<set>
#include<map>
#include<stdio.h>
using namespace std;

int n;//n个集合
set<int> s[55];
int m,k;//每个集合m个元素,k个查询

int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
		cin>>m;
		int a;
		for(int j=0;j<m;j++){
			cin>>a;
			s[i].insert(a);
		}
	}

	cin>>k;
	int a,b;
	for(int i=0;i<k;i++){
        cin>>a>>b;
        int nc=0, nt=s[b].size();
        set<int>::iterator it;
        for(it=s[a].begin();it!=s[a].end();it++){
			if(s[b].find(*it)==s[b].end()){
                nt++;
			}else{
			    nc++;
			}
		}
		float rate=(float)(nc*100)/(float)nt;
		printf("%.1f%%\n", rate);
	}
    return 0;
}
上一篇:[bzoj3193][JLOI2013]地形生成_排列组合_贪心


下一篇:mimikatz记录