C++求set的交集和并集

Python中求集合的交集并集是十分方便了,但在C++中还是有困难的。

set里面有set_intersection(取集合交集)、set_union(取集合并集)、set_difference(取集合差集)、set_symmetric_difference(取集合对称差集)等函数。共有5个参数,前4个参数一样分别是集合a.begin(),end和b.begin,end。

第5个参数是保存的位置或者直接输出。

  • 保存到set或vector: 将集合A、B取合集后的结果存入集合C中

  • 输出: 将A、B取合集后的结果直接输出,(cout," ")双引号里面是输出你想用来间隔集合元素的符号或是空格。

注意有些编译器需要导入

#include<bits/stdc++.h>
才能运行,不单单只是<set>

例题 PAT 甲 1063 Set Similarity (25 分)

Given two sets of integers, the similarity of the sets is defined to be , where  is the number of distinct common numbers shared by the two sets, and  is the total number of distinct numbers in the two sets. Your job is to calculate the similarity of any given pair of sets.

Input Specification:

Each input file contains one test case. Each case first gives a positive integer  () which is the total number of sets. Then  lines follow, each gives a set with a positive  () and followed by  integers in the range []. After the input of sets, a positive integer  () is given, followed by  lines of queries. Each query gives a pair of set numbers (the sets are numbered from 1 to ). All the numbers in a line are separated by a space.

Output Specification:

For each query, print in one line the similarity of the sets, in the percentage form accurate up to 1 decimal place.

Sample Input:

Sample Output:

作者: CHEN, Yue
单位: 浙江大学
时间限制: 500 ms
内存限制: 64 MB
代码长度限制: 16 KB

代码:

 

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注