|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
# 202308G 小粉兔处理题解审核志愿者轮换
## 题目背景
又到了一周的周日,扶苏又像催命一样开始催促小粉兔处理题解审核志愿者的轮换。但是懒狗小粉兔总是把这项工作拖到第二天凌晨。
【这里有一张内部群聊图,但是因为工作群信息应保密,所以这张图被和谐了】
## 题目描述
每周都有若干名题解审核志愿者处理题解审核工作。每周末轮换时,本周的志愿者中会有若干人退出工作,其余人继续下周工作;此外,还有若干新人参与下周工作。
每周末,扶苏会给小粉兔提供如下三组信息:
- 本周的题解审核志愿者名单。
- 本周有哪些题解审核志愿者退出工作。
- 下周有哪些新人参与工作。
因为小粉兔忙着玩原神,所以小粉兔求着扶苏来处理轮换。但是扶苏忙着给洛谷入门赛造题,所以请你来给出下周的题解审核志愿者名单。扶苏承诺,只要你正确地给出名单,她将把小粉兔在头图中给出的辈分分一半给你。
## 输入格式
第一行有三个整数,依次表示本周题解审核志愿者数量 $n$,退出工作的题解审核志愿者数量 $m$,和参与工作的新人数量 $l$。
接下来 $n$ 行,每行一个字符串,表示一个本周题解审核志愿者的用户名。
接下来 $m$ 行,每行一个字符串,表示一个退出下周工作的本周题解审核志愿者的用户名。
接下来 $l$ 行,每行一个字符串,表示一个下周将参与工作的新题解审核志愿者的用户名。
## 输出格式
输出若干行,每行一个字符串。
按字典序从小到大的顺序输出下周所有题解审核志愿者的用户名。
## 样例 #1
### 样例输入 #1
```
5 4 1
10circle
yltx
Buffet
Kevin
lihanwen12
yltx
Buffet
Kevin
lihanwen12
PinkieRabbitMinus154
```
### 样例输出 #1
```
10circle
PinkieRabbitMinus154
```
## 提示
### 数据规模与约定
| 测试点编号 | $n \leq$ | $m \leq$ | $l \leq$ |
| :----------: | :----------: | :----------: | :----------: |
| $1$ | $1$ | $0$ | $0$ |
| $2,3$| $100$ | $0$ | $0$ |
| $4,5$ | $100$ | $100$ | $0$ |
| $6,7$ | $100$ | $0$ | $100$ |
| $8, 9$ | $100$ | $100$ | $100$ |
| $10$| $10^5$ | $10^5$ | $10^5$ |
对全部的测试点,保证:
- $1 \leq n \leq 10^5$
- $0 \leq m \leq n$
- $0 \leq l \leq 10^5$
- 除样例最后一行外,输入字符串的长度不超过 $10$。
- 输入字符串仅含有大小写字母和数字。
- 本周的题解审核志愿者用户名互不相同。
- 本周退出工作的志愿者用户名互不相同,且均是本周的题解审核志愿者。
- 下周将参与工作的志愿者用户名互不相同,且均不是本周的题解审核志愿者。
我的代码:
- #include <iostream>
- #include <string>
- #include <algorithm>
- using namespace std;
- int n, m, l;
- string yu[10002], leave[10002], join[10002];
- int main(){
- cin >> n >> m >> l;
- for(int i=1;i<=n;i++){
- cin >> yu[i];
- }
- for(int i=1;i<=m;i++){
- cin >> leave[i];
- }
- for(int i=1;i<=l;i++){
- cin >> join[i];
- }
- for(int i=1;i<=n;i++){
- bool k = 1;
- for(int j=1;j<=m;j++){
- if(yu[i] == leave[j]){
- k = 0;
- }
- }
- if(k){
- cout << yu[i] << endl;
- }
- }
- for(int i=1;i<=l;i++){
- cout << join[i] << endl;
- }
- }
复制代码
但提交后不正确
问题出在你的代码中没有按照题目要求的输出格式进行输出。题目要求按照字典序从小到大的顺序输出下周所有题解审核志愿者的用户名,而你的代码只是按照输入的顺序输出了结果。
为了解决这个问题,你需要对输出结果进行排序。你可以将所有的用户名存储在一个数组中,然后使用C++的sort函数对数组进行排序,最后按照排序后的顺序输出结果。
修改后的代码如下:
- #include <iostream>
- #include <string>
- #include <algorithm>
- using namespace std;
- int n, m, l;
- string yu[10002], leave[10002], join[10002];
- int main(){
- cin >> n >> m >> l;
- for(int i=1;i<=n;i++){
- cin >> yu[ i];
- }
- for(int i=1;i<=m;i++){
- cin >> leave[ i];
- }
- for(int i=1;i<=l;i++){
- cin >> join[ i];
- }
- // 将所有用户名存储在一个数组中
- string allUsers[100000];
- int index = 0;
- for(int i=1;i<=n;i++){
- bool k = true;
- for(int j=1;j<=m;j++){
- if(yu[ i] == leave[j]){
- k = false;
- break;
- }
- }
- if(k){
- allUsers[index++] = yu[ i];
- }
- }
- for(int i=1;i<=l;i++){
- allUsers[index++] = join[ i];
- }
- // 对数组进行排序
- sort(allUsers, allUsers + index);
- // 按照字典序从小到大的顺序输出结果
- for(int i=0;i<index;i++){
- cout << allUsers[ i] << endl;
- }
- return 0;
- }
复制代码
希望对你有帮助!如果还有其他问题,请随时提问。
|
|