1121 Damn Single (25 分)
"Damn Single (单身狗)" is the Chinese nickname for someone who is being single. You are supposed to find those who are alone in a big party, so they can be taken care of.
Input Specification:
Each input file contains one test case. For each case, the first line gives a positive integer N (≤ 50,000), the total number of couples. Then N lines of the couples follow, each gives a couple of ID‘s which are 5-digit numbers (i.e. from 00000 to 99999). After the list of couples, there is a positive integer M (≤ 10,000) followed by M ID‘s of the party guests. The numbers are separated by spaces. It is guaranteed that nobody is having bigamous marriage (重婚) or dangling with more than one companion.
Output Specification:
First print in a line the total number of lonely guests. Then in the next line, print their ID‘s in increasing order. The numbers must be separated by exactly 1 space, and there must be no extra space at the end of the line.
Sample Input:
3
11111 22222
33333 44444
55555 66666
7
55555 44444 10000 88888 22222 11111 23333
Sample Output:
5
10000 23333 44444 55555 88888
题意:找出谁是“单身狗”。。。先输入各对CP,然后再输入参加party的人员,统计输入的这些人里哪些是没有CP一起来的,升序输出。
分析:水题。。我思路是用一个数组couple,初始化为-1(因为人的编号为00000-99999),作用是来存储某人的CP,如11111的CP是22222,那么couple[11111]=22222,couple[22222]=11111。最后因为要格式输出,不知道迭代器怎么格式输出。。就先把结果存到了vector中,具体见代码
1 /** 2 * Copyright(c) 3 * All rights reserved. 4 * Author : Mered1th 5 * Date : 2019-02-27-21.51.47 6 * Description : A1121 7 */ 8 #include<cstdio> 9 #include<cstring> 10 #include<iostream> 11 #include<cmath> 12 #include<algorithm> 13 #include<string> 14 #include<unordered_set> 15 #include<map> 16 #include<vector> 17 #include<set> 18 using namespace std; 19 const int maxn=100010; 20 int couple[maxn]={-1}; 21 int main(){ 22 #ifdef ONLINE_JUDGE 23 #else 24 freopen("1.txt", "r", stdin); 25 #endif 26 int n,m,u,v,t; 27 scanf("%d",&n); 28 for(int i=0;i<n;i++){ 29 scanf("%d%d",&u,&v); 30 couple[u]=v; 31 couple[v]=u; 32 } 33 scanf("%d",&m); 34 vector<int> tem; 35 for(int i=0;i<m;i++){ 36 scanf("%d",&t); 37 tem.push_back(t); 38 } 39 set<int> ans; 40 for(int i=0;i<m;i++){ 41 int coup=couple[tem[i]]; 42 if(coup==-1) ans.insert(tem[i]); 43 else{ 44 if(find(tem.begin(),tem.end(),coup)==tem.end()){ 45 ans.insert(tem[i]); 46 } 47 } 48 } 49 cout<<ans.size()<<endl; 50 vector<int> res; 51 for(auto it=ans.begin();it!=ans.end();it++){ 52 res.push_back(*it); 53 } 54 for(int i=0;i<res.size();i++){ 55 printf("%05d",res[i]); 56 if(i!=res.size()-1) printf(" "); 57 } 58 return 0; 59 }
原文地址:https://www.cnblogs.com/Mered1th/p/10447948.html