文章

6

粉丝

29

获赞

0

访问

905

头像
集合交并 题解:
P1813 复旦大学2018年机试
发布于2024年3月19日 19:05
阅读数 120

重点:set的使用

set<int> s3(s1); // 可以把s3置为和s1相同

思路:先读一个集合s1,设置空集s2存放交集(输入第二组元素时若s1中有放入s2),设置和s1相同的集合s3(输入第二组元素时若s1没有则读入并集s3)


#include <iostream>
#include <set>
using namespace std;

int main() {
    int n, m;
    cin >> n;
    cin >> m;
    set<int> s1;
    // 读入第一组数字,放入集合s1
    for (int i = 0; i < n; i++) {
        int a;
        cin >> a;
        s1.insert(a);
    }
    set<int> s2; // s2用于存放第二组数字
    set<int> s3(s1); // s3初始与s1相同,用于计算并集
    // 读入第二组数字
    for (int j = 0; j < m; j++) {
        int b;
        cin >> b;
        if (s1.count(b)) {
            // 如果b在s1中,加入s2(交集)
            s2.insert(b);
        }
        // 无论b是否在s1中,都加入s3(并集)
        s3.insert(b);
    }

    // 输出交集和并集的大小
    cout << s2.size() << " " << s3.size();
    return 0;
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发