当前位置: 首页 > news >正文

东方博宜OJ 1953:新生舞会 ← STL map / 结构体

​【题目来源】
https://oj.czos.cn/p/1953

【题目描述】
新生舞会开始了。
n 名新生每人有三个属性:姓名、学号、性别。其中,姓名用长度不超过 20 的仅由大小写字母构成的字符串表示,学号用长度不超过 10 的仅由数字构成的字符串表示,性别用一个大写字符 F 或 M 表示。任意两人的姓名、学号均互不相同。换言之,每个人可被其姓名或学号唯一确定。
给出 m 对两人的信息(姓名或学号),判断他们是否能共舞。两人能共舞的充要条件为两人性别相异。

【输入格式】
第一行一个整数 n(2≤n≤1000),表示学生人数。接下来的 n 行每行依次包含一名新生的姓名、学号、性别,分别用一个空格隔开。
之后的一行是一个整数 m(1≤m≤1000),表示询问的数目。
接着的 m 行每行包含两个信息(姓名或学号),保证两个信息不属于同一人,中间用一个空格隔开。​​​​​​​

【输出格式】
对于每个询问输出一行,如果两人可以共舞,输出一个大写字母 Y,否则输出一个大写字母 N。

【输入样例】
4
John 10 M
Jack 11 M
Kate 20 F
Jim 21 M
3
John 11
20 Jack
Jim Jack​​​​​​​

【输出样例】
N
Y
N

【数据范围】
2≤n≤1000,
1≤m≤1000

【算法分析】
isdigit(x) 函数用于判断字符 x 是否为十进制数字字符(即 '0' 到 '9')。

【算法代码:STL map

#include <bits/stdc++.h>
using namespace std;map<string,char> nameToSex;
map<string,char> idxToSex;
string name,idx;
char sex;
int n,m;int main() {cin>>n;while(n--) {cin>>name>>idx>>sex;nameToSex[name]=sex;idxToSex[idx]=sex;}cin>>m;while(m--) {string s,t;cin>>s>>t;char sexA, sexB;if(isdigit(s[0])) sexA=idxToSex[s];else sexA=nameToSex[s];if(isdigit(t[0])) sexB=idxToSex[t];else sexB=nameToSex[t];if(sexA!=sexB) cout<<"Y"<<endl;else cout<<"N"<<endl;}return 0;
}/*
in:
4
John 10 M
Jack 11 M
Kate 20 F
Jim 21 M
3
John 11
20 Jack
Jim Jackout:
N
Y
N
*/


【算法代码二:结构体 + STL map

#include <bits/stdc++.h>
using namespace std;const int maxn=1e3+5;
map<string,char> nameToSex;
map<string,char> idxToSex;struct Person {string name;string idx;char sex;
} p[maxn];int main() {int n,m;cin>>n;for(int i=1; i<=n; i++) {cin>>p[i].name>>p[i].idx>>p[i].sex;nameToSex[p[i].name]=p[i].sex;idxToSex[p[i].idx]=p[i].sex;}cin>>m;while(m--) {string s,t;cin>>s>>t;char sexA,sexB;if(isdigit(s[0])) sexA=idxToSex[s];else sexA=nameToSex[s];if(isdigit(t[0])) sexB=idxToSex[t];else sexB=nameToSex[t];if(sexA!=sexB) cout<<"Y"<<endl;else cout<<"N"<<endl;}return 0;
}/*
in:
4
John 10 M
Jack 11 M
Kate 20 F
Jim 21 M
3
John 11
20 Jack
Jim Jackout:
N
Y
N
*/

 


【参考文献】
https://oj.czos.cn/p/1953

 

 

 

 

http://www.jsqmd.com/news/177995/

相关文章:

  • 声嘶力竭
  • 1月1日元旦,朋友圈一定要这样发
  • 论文重复率破解策略:AI驱动的6种改写技巧
  • 基于Simulink的直流无刷电机三闭环控制模型研究
  • Linux的命令速记
  • 安森美将与格罗方德共同开发下一代氮化镓功率器件
  • 论文降重技巧Top6:智能工具与创新方法全解析
  • [1]探讨AI的C++风(以 DeepSeek R1为例)
  • RTOS十年演进(2015–2025)
  • 职业学院游戏发布
  • AI赋能论文查重:6种智能改写方法对比分析
  • springboot基于Java的旅游攻略分享平台设计实现
  • 小米 | 运维开发工程师一面面经来啦
  • [ABC438G] Sum of Min
  • [ABC438G] Sum of Min
  • 论文查重优化方案:六大AI工具高效改写指南
  • 基于遗传算法的车辆优化调度与成本最小化:考虑多配送中心与供应惩罚的Matlab完整代码
  • 基于遗传算法的车辆优化调度与成本最小化:考虑多配送中心与供应惩罚的Matlab完整代码
  • EXTI和NVIC的这两个外设时钟为什么不需要开启?不开启外设时钟程序能否执行? - 实践
  • 学术论文降重技巧盘点:6种AI辅助方法全解析
  • 别再熬夜赶论文?8个免费AI生成器让效率直飙300%!
  • 别再熬夜赶论文?8个免费AI生成器让效率直飙300%!
  • 小粉兔烹饪指南
  • Keil MDK 5.40 超详细保姆级下载安装激活教程 + 新手入门(嵌入式开发实操指南)
  • 大数据领域分布式计算的资源管理技巧
  • 四参数随机生长法QSGS算法:随机孔隙结构与微观孔隙优化处理的生成与处理
  • 职业学院游戏插件look
  • centOS stream 9 安装rabbitMQ4.2
  • 手把手玩转PLC小车往返控制:从梯形图到触摸屏动画
  • MindSpore开发之路(十七):静态图 vs. 动态图:掌握MindSpore的两种执行模式