这类题目是C++标准模板库的使用,是重点知识。
题目描述如下:
题目大致意思:
题目意思理解起来很简单,就是给出两个集合,求出两个集合的交集的长度比上两个集合的并集的长度的比例。
大致思路:
用个函数,来求两个集合的交集的长度和两个集合的并集的长度。
提交结果如下:
提交的代码如下:
#include<iostream>
#include<cstdio>
#include<set>
#include<vector>
#include<iomanip>
using namespace std;
void func(set<int> a,set<int> b,float &j_len,float &b_len);
int main()
{
vector<set<int> > arr;
int n;
cin>>n;
for(int i=0;i<n;i++)
{
int temp;
cin>>temp;
set<int> se;
for(int j=0;j<temp;j++)
{
int temp1;
scanf("%d",&temp1);
se.insert(temp1);
}
arr.push_back(se);
}
int m;
cin>>m;
for(int i=0;i<m;i++)
{
int a1,a2;
cin>>a1>>a2;
float j_len,b_len;
func(arr[a1-1],arr[a2-1],j_len,b_len);
cout<<setiosflags(ios::fixed)<<setprecision(1)<<(j_len/b_len)*100<<"%"<<endl;
}
}
void func(set<int> a,set<int> b,float &j_len,float &b_len)
{
j_len=0;
b_len=b.size();
for(set<int>::iterator it=a.begin();it!=a.end();it++)
{
if(b.find(*it)==b.end())
b_len++;
else
j_len++;
}
}
本次提交后累计得分为1118。