一道vector的题,超时

zhaoqianwan / 2023-05-14 / 原文

“单身狗”是中文对于单身人士的一种爱称。本题请你从上万人的大型派对中找出落单的客人,以便给予特殊关爱。

输入格式:

输入第一行给出一个正整数 N(≤ 50 000),是已知夫妻/伴侣的对数;随后 N 行,每行给出一对夫妻/伴侣——为方便起见,每人对应一个 ID 号,为 5 位数字(从 00000 到 99999),ID 间以空格分隔;之后给出一个正整数 M(≤ 10 000),为参加派对的总人数;随后一行给出这 M 位客人的 ID,以空格分隔。题目保证无人重婚或脚踩两条船。

输出格式:

首先第一行输出落单客人的总人数;随后第二行按 ID 递增顺序列出落单的客人。ID 间用 1 个空格分隔,行的首尾不得有多余空格。

输入样例:

3
11111 22222
33333 44444
55555 66666
7
55555 44444 10000 88888 22222 11111 23333
 

输出样例:

5
10000 23333 44444 55555 88888
 
代码长度限制
16 KB
时间限制
200 ms
内存限制
64 MB
 
#include<iostream>
#include<algorithm>
#include<vector>
using·namespace·std;
int·main()
{
····int·N,·b,·c,·M,·e;
····cin·>>·N;
····vector<int>V1;
····vector<int>V2;
····vector<int>V3;
····for·(int·i·=·0;·i·<·N;·i++)
····{
········cin·>>·b·>>·c;
········V1.push_back(b);
········V2.push_back(c);
····}
········cin·>>·M;
····for·(int·i·=·0;·i·<·M;·i++)
····{
········cin·>>·e;
········V3.push_back(e);
····}
····for·(int·i·=·0;·i·<·N;·i++)
····{
········int·count·=·0;
········for·(int·j·=·0;·j·<·V3.size();·j++)
········{
············
············if·(V1[i]·==·V3[j]||V2[i]·==·V3[j])
············{
················count++;
 
············}
············if·(count·==·2)
············{
················V3.erase(V3.begin()·+·j);//不要用迭代器容易错
················V3.erase(V3.begin()·+·j-1);//因为元素少了一个
················break;
············}
········}
····}
····sort(V3.begin(),·V3.end());
····cout·<<·V3.size()·<<·endl;
····for·(int·i·=·0;·i·<·V3.size();·i++)
····{
········if·(i·!=·V3.size()·-·1)
········{
············cout·<<·V3[i]·<<·"·";
········}
········else
········{
············cout·<<·V3[i];
········}
····}
····return·0;
}