7-21 燕归来
无可奈何花落去,似曾相识燕归来。
研究燕子随季节迁徙的科学家们,给一批燕子做了标记,每只被标记的燕子有一个独特的编号。等它们归来时,再根据标记检查有哪些燕子没有回来,同时有哪些燕子是从别处飞来的,身上带了别人家的标记。
输入格式:
输入首先给出飞走的燕子的信息:在第一行给出不超过 105 的正整数 N,随后 N 行,每行给出一只飞走的燕子的编号。题目保证编号不重复。
随后是飞回的燕子的信息,首先是一个不超过 105 的非负整数 M,随后 M 行,每行给出一只飞回的燕子的编号。题目保证编号不重复。
编号为长度不超过 8 的、由英文字母和数字组成的字符串。
输出格式:
首先输出没有回来的燕子的信息,格式为:
Missing: X
ID[1]
...
ID[X]
Missing: X
ID[1]
...
ID[X]
其中 X
为没有回来的燕子的数量,ID[i]
(i
= 1, ..., X
)为按字典序递增输出的这些燕子的编号。
然后输出新增燕子的信息,格式同上,只是把 Missing
换成 New
。
如果 X
为零,则对应情况下输出 All Back
(都回来了)或 All Known
(都认识)。
输入样例 1:
tex
5
CN009
CN018
CN001
CN005
CN000
6
US981
CN018
CN000
AUS83
CN005
RU996
5
CN009
CN018
CN001
CN005
CN000
6
US981
CN018
CN000
AUS83
CN005
RU996
输出样例 1:
tex
Missing: 2
CN001
CN009
New: 3
AUS83
RU996
US981
Missing: 2
CN001
CN009
New: 3
AUS83
RU996
US981
输入样例 2:
tex
5
CN009
CN018
CN001
CN005
CN000
5
CN018
CN001
CN005
CN009
CN000
5
CN009
CN018
CN001
CN005
CN000
5
CN018
CN001
CN005
CN009
CN000
输出样例 2:
tex
All Back
All Known
All Back
All Known
Solution:
java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Set;
import java.util.TreeSet;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(in.readLine());
Set<String> out = new TreeSet<>();
Set<String> back = new TreeSet<>();
Set<String> outTemp = new TreeSet<>();
for (int i = 0; i < n; i++) {
String s = in.readLine();
out.add(s);
outTemp.add(s);
}
int m = Integer.parseInt(in.readLine());
for (int i = 0; i < m; i++) {
String s = in.readLine();
back.add(s);
}
out.removeAll(back);
back.removeAll(outTemp);
int size1 = out.size();
int size2 = back.size();
StringBuilder sb = new StringBuilder();
if (size1 > 0) {
sb.append("Missing: ").append(size1).append("\n");
for (String s : out) {
sb.append(s).append("\n");
}
} else {
sb.append("All Back\n");
}
if (size2 > 0) {
sb.append("New: ").append(size2).append("\n");
for (String s : back) {
sb.append(s).append("\n");
}
} else {
sb.append("All Known\n");
}
System.out.print(sb);
}
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Set;
import java.util.TreeSet;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(in.readLine());
Set<String> out = new TreeSet<>();
Set<String> back = new TreeSet<>();
Set<String> outTemp = new TreeSet<>();
for (int i = 0; i < n; i++) {
String s = in.readLine();
out.add(s);
outTemp.add(s);
}
int m = Integer.parseInt(in.readLine());
for (int i = 0; i < m; i++) {
String s = in.readLine();
back.add(s);
}
out.removeAll(back);
back.removeAll(outTemp);
int size1 = out.size();
int size2 = back.size();
StringBuilder sb = new StringBuilder();
if (size1 > 0) {
sb.append("Missing: ").append(size1).append("\n");
for (String s : out) {
sb.append(s).append("\n");
}
} else {
sb.append("All Back\n");
}
if (size2 > 0) {
sb.append("New: ").append(size2).append("\n");
for (String s : back) {
sb.append(s).append("\n");
}
} else {
sb.append("All Known\n");
}
System.out.print(sb);
}
}