2024洛谷SCP-S1的小问题
  • 板块学术版
  • 楼主Resonate
  • 当前回复12
  • 已保存回复13
  • 发布时间2024/8/21 10:22
  • 上次更新2024/8/21 12:49:35
查看原帖
2024洛谷SCP-S1的小问题
753553
Resonate楼主2024/8/21 10:22
#include <bits/stdc++.h>
using namespace std;
set<int> s1 = {1, 2, 3}, s2 = {2, 3, 1, 1},
        s3 = {1, 2, 100}, s4 = {3, 4, 5};
map<set<int>, int> mp1, mp2;
set<int> intersection(set<int> a, set<int> b)
{
    if (a.size() > b.size())
        swap(a, b);
    set<int> res = a;
    for (int i : a)
        if (b.count(i) == 0)
            res.erase(i);
    return res;
}
int main()
{
    cout << (s1 == s2) << endl;
    mp1[s3] = 9;
    mp1[s1] = 1;
    mp2[s2] = 1;
    mp2[s4] = 5;
    cout << (mp1 < mp2) << ' ';
    cout << mp2[s3] << ' ';
    cout << (mp1 <= mp2) << endl;
    mp1.clear();
    int n, l, t;
    cin >> n;
    for (int i = 1; i <= n; i++)
    {
        set<int> tmp;
        for (cin >> l; l; l--)
        {
            cin >> t;
            tmp.emplace(t);
        }
        mp1[tmp] = i;
    }
    set<int> res = mp1.begin()->first;
    for (auto i : mp1)
        res = intersection(i.first, res);
    cout << res.size();
    return 0;
}
  1. 输出的第二行是( )。

A. 0 0 0 B. 1 0 1 C. 0 1 1 D. 1 0 0

为什么是选D?以及map的大小关系是怎么判断的?

2024/8/21 10:22
加载中...