A1121 Damn Single (25分)

一、技术总结

  1. 本题就是简单的逻辑题,把题目理解就行,给出n组情侣或夫妻,然后再给出m个人,选出不包含组的里的人,如果在组里面,但是查询名单里面没有他的伴侣,他也算单身。
  2. 同时,找出后还要求按照编号升序打印。
  3. 接下来就是如何找出在场单身人士了,我们可以用一个map类型的用于标记各自的伴侣,方便查询使用。然后我们可以设置两个set容器,S1用于存储查询人群中所有人id,S2用于储存确定为单身人士的编号。
  4. 最后打印输出即可。

二、参考代码

#include<iostream>
#include<map>
#include<set>
using namespace std;
map<int, int> C;
set<int> S1, S2;
int M[10010];
int main(){
	int n, m;
	scanf("%d", &n);
	for(int i = 0;i < n; i++){
		int a, b;
		scanf("%d %d", &a, &b);
		C[a] = b;
		C[b] = a;
	}
	scanf("%d", &m);
	for(int i = 0; i < m; i++){
		int c;
		scanf("%d", &c);
		M[i] = c;
		S1.insert(c);
	}
	for(int i = 0; i < m; i++){
		if(S1.find(C[M[i]]) == S1.end()) S2.insert(M[i]);
	}
	printf("%d\n", S2.size());
	for(auto it = S2.begin(); it != S2.end(); it++){
		if(it != S2.begin()) printf(" ");
		printf("%05d", *it);
	}	
	return 0;
}
posted @ 2020-06-05 19:17  睿晞  阅读(125)  评论(0编辑  收藏  举报